From 0085d9bf9a94cc8c4868cc8e20ed428c66bbfa0d Mon Sep 17 00:00:00 2001 From: Ole Artz Date: Tue, 15 Aug 2017 15:43:02 +0200 Subject: [PATCH] DASH: huge change of config file structure --- python_suite/dashboard/dashboard.py | 106 +++---- python_suite/dashboard/example.config.json | 279 +++++++++++++----- .../dashboard/views/pv_overview.jinja2 | 11 +- 3 files changed, 270 insertions(+), 126 deletions(-) diff --git a/python_suite/dashboard/dashboard.py b/python_suite/dashboard/dashboard.py index 6eea493..a3d957c 100755 --- a/python_suite/dashboard/dashboard.py +++ b/python_suite/dashboard/dashboard.py @@ -3,7 +3,7 @@ import json, threading, time import epics -from bottle import route, run, static_file +from bottle import route, run, static_file, redirect, abort from bottle import jinja2_view as view CONFIG = None @@ -22,62 +22,66 @@ def cb_connection_change(**kwargs): p.get_ctrlvars() #end = time.time() #print("Finished thread for ", kwargs['pvname'], " in ", end-start, " s. Unit: ", p.units) - #for group in CONFIG['groups']: - # for pv in group['PVs']: - # if pv['name'] != kwargs['pvname']: continue - # pv['unit'] = p.units or '' + #for pv in CONFIG['PVs']: + # if pv['name'] != kwargs['pvname']: continue + # pv['unit'] = p.units or '' tid = threading.Thread(target=fetch_ctrlvars) tid.daemon = True tid.start() return # Otherwise: we are disconnected from the IOC! - for group in CONFIG['groups']: - for pv in group['PVs']: - if pv['name'] != kwargs['pvname']: continue + for pv in CONFIG['PVs']: + if pv['name'] != kwargs['pvname']: continue - pv['value'] = '- disconnected -' - pv['unit'] = '' - pv['classes'] = 'disconnected' - pv['precision'] = None + pv['value'] = '- disconnected -' + pv['unit'] = '' + pv['classes'] = 'disconnected' + pv['precision'] = None def cb_value_update(**kwargs): global CONFIG - for group in CONFIG['groups']: - for pv in group['PVs']: - if pv['name'] != kwargs['pvname']: continue - - class_map = { - epics.NO_ALARM : "", - epics.MINOR_ALARM : "minor_alarm", - epics.MAJOR_ALARM : "major_alarm", - epics.INVALID_ALARM : "invalid_alarm", - None : "disconnected", - } - pv['classes'] = class_map[kwargs['severity']] - #print(kwargs['pvname'], kwargs['type']) - #print(kwargs) - if 'enum' in kwargs['type']: - if type(kwargs['char_value']) is bytes: - pv['value'] = kwargs['char_value'].decode('ascii') - else: - pv['value'] = kwargs['char_value'] + for pv in CONFIG['PVs']: + if pv['name'] != kwargs['pvname']: continue + + class_map = { + epics.NO_ALARM : "", + epics.MINOR_ALARM : "minor_alarm", + epics.MAJOR_ALARM : "major_alarm", + epics.INVALID_ALARM : "invalid_alarm", + None : "disconnected", + } + pv['classes'] = class_map[kwargs['severity']] + #print(kwargs['pvname'], kwargs['type']) + #print(kwargs) + if 'enum' in kwargs['type']: + if type(kwargs['char_value']) is bytes: + pv['value'] = kwargs['char_value'].decode('ascii') else: - pv['value'] = kwargs['value'] - pv['precision'] = kwargs['precision'] - #if type(kwargs['precision']) == int and ('double' in kwargs['type'] or 'float' in kwargs['type']): - # pv['value'] = round(pv['value'], kwargs['precision']) - if kwargs['enum_strs'] == (b'OFF', b'ON'): - pv['classes'] += ' switch' - if pv['value'] is None: pv['value'] = '- disconnected -' - pv['unit'] = kwargs['units'] or '' - if pv['unit'] == 'deg C': pv['unit'] = '°C' - if pv['unit'] == 'g/m3': pv['unit'] = 'g/m³' + pv['value'] = kwargs['char_value'] + else: + pv['value'] = kwargs['value'] + pv['precision'] = kwargs['precision'] + #if type(kwargs['precision']) == int and ('double' in kwargs['type'] or 'float' in kwargs['type']): + # pv['value'] = round(pv['value'], kwargs['precision']) + if kwargs['enum_strs'] == (b'OFF', b'ON'): + pv['classes'] += ' switch' + if pv['value'] is None: pv['value'] = '- disconnected -' + pv['unit'] = kwargs['units'] or '' + if pv['unit'] == 'deg C': pv['unit'] = '°C' + if pv['unit'] == 'g/m3': pv['unit'] = 'g/m³' + @route('/') -@view('pv_overview.jinja2') def index(): - return CONFIG + redirect('/list/general_overview') + +@route('/list/') +@view('pv_overview.jinja2') +def list_pvs(page): + if page not in CONFIG['pages']: + return abort(404, 'Page not found') + return {'config': CONFIG, 'req_page': page} @route('/api/values.json') def index(): @@ -110,13 +114,15 @@ def main(): sys.stderr.write(str(e) + "\n") sys.exit(1) - for group in CONFIG['groups']: - for pv in group['PVs']: - pv['value'] = '- disconnected (initial) -' - pv['unit'] = '' - pv['precision'] = None - pv['classes'] = 'disconnected' - PVS[pv['name']] = epics.PV(pv['name'], auto_monitor=True, form='ctrl', callback=cb_value_update, connection_callback=cb_connection_change) + CONFIG['PV_lookup'] = {} + + for i, pv in enumerate(CONFIG['PVs']): + pv['value'] = '- disconnected (initial) -' + pv['unit'] = '' + pv['precision'] = None + pv['classes'] = 'disconnected' + PVS[pv['name']] = epics.PV(pv['name'], auto_monitor=True, form='ctrl', callback=cb_value_update, connection_callback=cb_connection_change) + CONFIG['PV_lookup'][pv['name']] = i run(host=args.host, port=args.port, debug=args.debug) diff --git a/python_suite/dashboard/example.config.json b/python_suite/dashboard/example.config.json index dcc62e0..8db1f20 100644 --- a/python_suite/dashboard/example.config.json +++ b/python_suite/dashboard/example.config.json @@ -1,80 +1,215 @@ { - "groups": [ - { - "name": "EXAMPLE", - "PVs": [ - {"name": "CBM:MVD:EXAMPLE:DISCONECTED_EXAMPLE"} + "PVs": [ + {"name": "CBM:MVD:EXAMPLE:DISCONECTED_EXAMPLE"}, + + {"name": "CBM:MVD:COOLING:CC405:BathTemperatureMom", "alias": "Current Heat Bath Temperature", "descr": ""}, + {"name": "CBM:MVD:COOLING:CC405:ExternalTemperatureMom"}, + {"name": "CBM:MVD:COOLING:CC405:SetpointMom"}, + {"name": "CBM:MVD:COOLING:CC405:FLOW:IN:Flow"}, + {"name": "CBM:MVD:COOLING:CC405:FLOW:IN:Total"}, + {"name": "CBM:MVD:COOLING:CC405:FLOW:OUT:Flow"}, + {"name": "CBM:MVD:COOLING:CC405:FLOW:OUT:Total"}, + + {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:IKR:Voltage"}, + {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:TPR2:Voltage"}, + {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:IKR:Voltage"}, + {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:TPR2:Voltage"}, + + {"name": "CBM:MVD:VACUUM:RECIPIENT:1:Pressure"}, + {"name": "CBM:MVD:VACUUM:RECIPIENT:1:Status"}, + {"name": "CBM:MVD:VACUUM:RECIPIENT:2:Pressure"}, + {"name": "CBM:MVD:VACUUM:RECIPIENT:2:Status"}, + {"name": "CBM:MVD:VACUUM:RECIPIENT:3:Pressure"}, + {"name": "CBM:MVD:VACUUM:RECIPIENT:3:Status"}, + + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:GetGeneralOutput"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOutput"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOutput"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOutput"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredCurrent"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltage"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMin"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMin"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMin"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMax"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMax"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMax"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPMode"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPMode"}, + {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPMode"}, + + {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Temperature"}, + {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Dewpoint"}, + {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:AbsoluteHumidity"}, + {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:RelativeHumidity"}, + {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:BatteryVoltage"}, + + {"name": "CBM:MVD:COOLING:CC405:Verify"}, + {"name": "CBM:MVD:COOLING:CC405:Firmware"}, + {"name": "CBM:MVD:COOLING:CC405:V"}, + {"name": "CBM:MVD:COOLING:CC405:HT"}, + {"name": "CBM:MVD:COOLING:CC405:Heating"}, + {"name": "CBM:MVD:COOLING:CC405:unknown1"}, + {"name": "CBM:MVD:COOLING:CC405:unknown2"}, + {"name": "CBM:MVD:COOLING:CC405:F"}, + {"name": "CBM:MVD:COOLING:CC405:T0"}, + {"name": "CBM:MVD:COOLING:CC405:TC"}, + {"name": "CBM:MVD:COOLING:CC405:T1"}, + {"name": "CBM:MVD:COOLING:CC405:TIntern"}, + {"name": "CBM:MVD:COOLING:CC405:TProcess"}, + {"name": "CBM:MVD:COOLING:CC405:TU"}, + {"name": "CBM:MVD:COOLING:CC405:TX1"}, + {"name": "CBM:MVD:COOLING:CC405:TX0"}, + {"name": "CBM:MVD:COOLING:CC405:Pressure"}, + {"name": "CBM:MVD:COOLING:CC405:PumpSpeed"}, + {"name": "CBM:MVD:COOLING:CC405:I"}, + {"name": "CBM:MVD:COOLING:CC405:AIF_IN"}, + {"name": "CBM:MVD:COOLING:CC405:TemperatureControl"}, + {"name": "CBM:MVD:COOLING:CC405:MinimumValue"}, + {"name": "CBM:MVD:COOLING:CC405:MaximumValue"} + ], + "pages": { + "general_overview": { + "name": "General System Overview", + "groups": [ + "example", + "cooling", + "low_voltage", + "pressure", + "environment" ] - }, - { - "name": "Cooling", - "PVs": [ - {"name": "CBM:MVD:COOLING:CC405:BathTemperatureMom"}, - {"name": "CBM:MVD:COOLING:CC405:ExternalTemperatureMom"}, - {"name": "CBM:MVD:COOLING:CC405:SetpointMom"}, - {"name": "CBM:MVD:COOLING:CC405:FLOW:IN:Flow"}, - {"name": "CBM:MVD:COOLING:CC405:FLOW:IN:Total"}, - {"name": "CBM:MVD:COOLING:CC405:FLOW:OUT:Flow"}, - {"name": "CBM:MVD:COOLING:CC405:FLOW:OUT:Total"} + }, + "cooling_system": { + "name": "Details Cooling System", + "groups": [ + "cooling_extended" ] + } }, - { - "name": "Pressure", - "PVs": [ - {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:IKR:Voltage"}, - {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:TPR2:Voltage"}, - {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:IKR:Voltage"}, - {"name": "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:TPR2:Voltage"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:1:Pressure"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:1:Status"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:2:Pressure"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:2:Status"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:3:Pressure"}, - {"name": "CBM:MVD:VACUUM:RECIPIENT:3:Status"} + "groups": { + "example": { + "name": "EXAMPLE", + "PVs": [ + "CBM:MVD:EXAMPLE:DISCONECTED_EXAMPLE" ] - }, - { - "name": "Low Voltage", - "PVs": [ - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:GetGeneralOutput"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOutput"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOutput"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOutput"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredCurrent"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltage"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMin"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMin"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMin"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMax"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMax"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMax"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPMode"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPMode"}, - {"name": "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPMode"} - ] - }, - { - "name": "Enviroment", - "PVs": [ - {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Temperature"}, - {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Dewpoint"}, - {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:AbsoluteHumidity"}, - {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:RelativeHumidity"}, - {"name": "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:BatteryVoltage"} + }, + "cooling": { + "name": "Cooling", + "PVs": [ + "CBM:MVD:COOLING:CC405:BathTemperatureMom", + "CBM:MVD:COOLING:CC405:ExternalTemperatureMom", + "CBM:MVD:COOLING:CC405:SetpointMom", + "CBM:MVD:COOLING:CC405:FLOW:IN:Flow", + "CBM:MVD:COOLING:CC405:FLOW:IN:Total", + "CBM:MVD:COOLING:CC405:FLOW:OUT:Flow", + "CBM:MVD:COOLING:CC405:FLOW:OUT:Total" + ] + }, + "cooling_extended": { + "name": "Cooling (extended)", + "PVs": [ + "CBM:MVD:COOLING:CC405:BathTemperatureMom", + "CBM:MVD:COOLING:CC405:ExternalTemperatureMom", + "CBM:MVD:COOLING:CC405:SetpointMom", + "CBM:MVD:COOLING:CC405:Verify", + "CBM:MVD:COOLING:CC405:Firmware", + "CBM:MVD:COOLING:CC405:V", + "CBM:MVD:COOLING:CC405:HT", + "CBM:MVD:COOLING:CC405:Heating", + "CBM:MVD:COOLING:CC405:unknown1", + "CBM:MVD:COOLING:CC405:unknown2", + "CBM:MVD:COOLING:CC405:F", + "CBM:MVD:COOLING:CC405:T0", + "CBM:MVD:COOLING:CC405:TC", + "CBM:MVD:COOLING:CC405:T1", + "CBM:MVD:COOLING:CC405:TIntern", + "CBM:MVD:COOLING:CC405:TProcess", + "CBM:MVD:COOLING:CC405:TU", + "CBM:MVD:COOLING:CC405:TX1", + "CBM:MVD:COOLING:CC405:TX0", + "CBM:MVD:COOLING:CC405:Pressure", + "CBM:MVD:COOLING:CC405:PumpSpeed", + "CBM:MVD:COOLING:CC405:I", + "CBM:MVD:COOLING:CC405:AIF_IN", + "CBM:MVD:COOLING:CC405:TemperatureControl", + "CBM:MVD:COOLING:CC405:MinimumValue", + "CBM:MVD:COOLING:CC405:MaximumValue", + "CBM:MVD:COOLING:CC405:FLOW:IN:Flow", + "CBM:MVD:COOLING:CC405:FLOW:IN:Total", + "CBM:MVD:COOLING:CC405:FLOW:OUT:Flow", + "CBM:MVD:COOLING:CC405:FLOW:OUT:Total" + ] + }, + "pressure": { + "name": "Pressure", + "PVs": [ + "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:IKR:Voltage", + "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_A:TPR2:Voltage", + "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:IKR:Voltage", + "CBM:MVD:VACUUM:PRESTO_RECIPIENT:SIDE_B:TPR2:Voltage", + "CBM:MVD:VACUUM:RECIPIENT:1:Pressure", + "CBM:MVD:VACUUM:RECIPIENT:1:Status", + "CBM:MVD:VACUUM:RECIPIENT:2:Pressure", + "CBM:MVD:VACUUM:RECIPIENT:2:Status", + "CBM:MVD:VACUUM:RECIPIENT:3:Pressure", + "CBM:MVD:VACUUM:RECIPIENT:3:Status" + ] + }, + "low_voltage": { + "name": "Low Voltage", + "PVs": [ + "CBM:MVD:POWER:PRESTO_RECIPIENT:GetGeneralOutput", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOutput", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOutput", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOutput", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:MeasuredCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:MeasuredCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:MeasuredCurrent", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltage", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMin", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMin", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMin", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPVoltageMax", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPVoltageMax", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPVoltageMax", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN1:GetOVPMode", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN2:GetOVPMode", + "CBM:MVD:POWER:PRESTO_RECIPIENT:CHAN3:GetOVPMode" + ] + }, + "environment": { + "name": "Enviroment", + "PVs": [ + "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Temperature", + "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:Dewpoint", + "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:AbsoluteHumidity", + "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:RelativeHumidity", + "CBM:MVD:ENVIRON:OPUS20_CLEANROOM:BatteryVoltage" ] + } } - ] } diff --git a/python_suite/dashboard/views/pv_overview.jinja2 b/python_suite/dashboard/views/pv_overview.jinja2 index d1e3a28..1842dca 100644 --- a/python_suite/dashboard/views/pv_overview.jinja2 +++ b/python_suite/dashboard/views/pv_overview.jinja2 @@ -13,9 +13,11 @@

PRESTO - Overview
Prototype of the Second Station of the Micro Vertex Detector of the Compressed Baryonic Matter

- {% for group in groups %} -
-

{{ group.name }}

+ {% set page = config.pages[req_page] %} + {% for group in page.groups %} + {% set this_group = config.groups[group] %} +
+

{{ this_group.name }}

@@ -27,7 +29,8 @@ - {% for PV in group.PVs %} + {% for pv_name in this_group.PVs %} + {% set PV = config.PVs[config.PV_lookup[pv_name]] %}
Value Unit
{{ PV.name }} -- 2.43.0