MTM1M3Temperature#

class lsst.ts.watcher.rules.MTM1M3Temperature(config, log=None)#

Bases: BaseRule

Monitor M1M3 mirror temperature.

Parameters:

Methods Summary

compute_alarm_severity(data, **kwargs)

Compute and set alarm severity and reason.

get_schema()

Return a jsonschema as a dict, to validate configuration.

get_temperature_change_too_high(temperature, ...)

Determine whether a temperature change was too high.

process_mtdome_data(data)

Process the MTDome data.

process_mtm1m3ts_data(topic_name, data)

Process the M1M3 thermal system data.

Methods Documentation

compute_alarm_severity(data, **kwargs)#

Compute and set alarm severity and reason.

Parameters:
  • data (salobj.BaseMsgType) – Message from the topic described by topic_callback.

  • **kwargs (dict [str, typing.Any]) –

    Keyword arguments. If triggered by TopicCallback calling update_alarm_severity, the arguments will be as follows:

    • topic_callback : TopicCallback Topic callback wrapper.

Return type:

tuple[AlarmSeverity, str] | None

Returns:

  • None, if no change or unknown, or a tuple of two values

  • severity (lsst.ts.xml.enums.Watcher.AlarmSeverity) – The new alarm severity.

  • reason (str) – Detailed reason for the severity, e.g. a string describing what value is out of range, and what the range is. If severity is NONE then this value is ignored (but still required) and the old reason is retained until the alarm is reset to nominal state.

Notes

You may return NoneNoReason if the alarm state is NONE.

classmethod get_schema()#

Return a jsonschema as a dict, to validate configuration.

Notes

Please provide default values for all fields for which defaults make sense. This makes watcher configuration files easier to write.

If your rule has no configuration then return None.

We recommend that you write the schema as yaml, for compactness, then use yaml.safe_load to convert it to a dict. For example:

schema_yaml = """
    $schema: http://json-schema.org/draft-07/schema#
    description: Configuration for MyRule
    type: object
    properties:
    ...
    required: [...]
    additionalProperties: false
"""
return yaml.safe_load(schema_yaml)
get_temperature_change_too_high(temperature, threshold, timestamp, temp_dict)#

Determine whether a temperature change was too high.

First the temperature from the telemetry is added. Then too old temperatures are discarded. Finally it is determined whether the difference for the reamining temperatures is too high or not.

Parameters:
  • temperature (float) – The temperature [degC] from the telemetry.

  • threshold (float) – The alarm threshold [degC].

  • timestamp (float) – The TAI timestamp [UNIX seconds] of the temperature.

  • temp_dict (dict`[`float, float]) – A dict with temperatures and their timestapms.

Returns:

Whether the temperature difference is too high or not.

Return type:

bool

process_mtdome_data(data)#

Process the MTDome data.

Determine whether the aperture shutter is open or not.

Parameters:

data (salobj.BaseMsgType) – The topic data.

Return type:

None

process_mtm1m3ts_data(topic_name, data)#

Process the M1M3 thermal system data.

Parameters:
  • topic_name (str) – The topic name.

  • data (salobj.BaseMsgType) – The topic data.

Return type:

None