KeysDictionary(
    'scr',
    (1, 4),
    Key('text', String(), help='Human oriented message string'),
    Key('version', String(), help='Actor version string'),
    Key('spsCooler',
        Float(name='facFlow', units='LPM', help='Facility coolant flow rate'),
        Float(name='facTemp', units='C', help='Facility coolant temperature'),
        Float(name='supFlow', units='LPM', help='Supply coolant flow rate'),
        Float(name='supTemp', units='C', help='Supply coolant temperature'),
        help='Coolant status at Lytron cooler at IR3 for spectrograph cryocoolers'
    ),
    Key('scrCooler',
        Float(name='facFlow', units='LPM', help='Facility coolant flow rate'),
        Float(name='facTemp', units='C', help='Facility coolant temperature'),
        Float(name='supFlow', units='LPM', help='Supply coolant flow rate'),
        Float(name='supTemp', units='C', help='Supply coolant temperature'),
        help='Coolant status at Lytron cooler at IR3 for clearn room heat exchangers'
    ),
    Key('spsChiller',
        Float(name='supTemp', units='C', help='Supply coolant temperature'),
        Float(name='supFlow', units='LPM', help='Supply coolant flow rate'),
        Float(name='supPress', units='MPa', help='Supply coolant pressure'),
        Enum('off', 'on', 'warning', 'fault', 'unknown', name='status', help='Operational status'),
        help='Status of SMC thermo chiller at IR3 for spectrograph cryocoolers'
    ),
    Key('scrChiller',
        Float(name='supTemp', units='C', help='Supply coolant temperature'),
        Float(name='supFlow', units='LPM', help='Supply coolant flow rate'),
        Float(name='supPress', units='MPa', help='Supply coolant pressure'),
        Enum('off', 'on', 'warning', 'fault', 'unknown', name='status', help='Operational status'),
        help='Status of SMC thermo chiller at IR3 for clearn room heat exchangers'
    ),
    Key('spsManf',
        Float(name='inPress', units='MPa', help='Intake coolant pressure'),
        Float(name='supFlow', units='LPM', help='Supply coolant flow rate'), # computed
        Float(name='supTemp', units='C', help='Supply coolant temperature'), # computed
        help='Coolant status at manifolds for spectrograph cryocoolers'
    ),
    Key('scrManf',
        Float(name='inPress', units='MPa', help='Intake coolant pressure'),
        Float(name='inFlow', units='LPM', help='Intake coolant flow rate'),
        Float(name='inTemp', units='C', help='Intake coolant temperature'),
        help='Coolant status at manifolds for clean room heat exchangers'
    ),
    Key('scrTemps',
        Float(name='bench1', units='C', help='Bench 1'),
        Float(name='bench2', units='C', help='Bench 2'),
        Float(name='bench3', units='C', help='Bench 3'),
        Float(name='bench4', units='C', help='Bench 4'),
        Float(name='hex1Inl', units='C', help='Heat exchanger 1 inlet'),
        Float(name='hex2Inl', units='C', help='Heat exchanger 2 inlet'),
        Float(name='hex3Exh', units='C', help='Heat exchanger 3 exhaust'),
        Float(name='hex4Exh', units='C', help='Heat exchanger 4 exhaust'),
        Float(name='hex1Exh', units='C', help='Heat exchanger 1 exhaust'),
        Float(name='hex2Exh', units='C', help='Heat exchanger 2 exhaust'),
        Float(name='hex3Inl', units='C', help='Heat exchanger 3 inlet'),
        Float(name='hex4Inl', units='C', help='Heat exchanger 4 inlet'),
        Float(name='ceiling1', units='C', help='Ceiling 1'),
        Float(name='ceiling2', units='C', help='Ceiling 2'),
        Float(name='ceiling3', units='C', help='Ceiling 3'),
        Float(name='ceiling4', units='C', help='Ceiling 4'),
        Float(name='bottom', units='C', help='Outside bottom'),
        Float(name='topRack', units='C', help='Outside, rack-side top'),
        Float(name='topEnt', units='C', help='Outside, entrance-side top'),
        help='Air temperatures inside and outside clean room',
    ),
)
