From d9466a09c5f4f0dea2bbf79fba07ba3c8c0eeda4 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Sun, 22 Oct 2023 21:11:10 +0200 Subject: [PATCH] added MachineStatus --- slic/utils/opmsg.py | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/slic/utils/opmsg.py b/slic/utils/opmsg.py index 901edd60..38ed97c3 100644 --- a/slic/utils/opmsg.py +++ b/slic/utils/opmsg.py @@ -19,6 +19,11 @@ IDS = { "Controls": "CS" } +BEAMLINES = [ + "ARAMIS", + "ATHOS" +] + IDS_INVERSE = {v: k for k, v in IDS.items()} @@ -182,17 +187,33 @@ class OperationMessageStatus: -#TODO: +class MachineStatus: -# machine: -# -# SF-STATUS-{BL}:CATEGORY -# -# SF-STATUS-{BL}:DOWNTIME -# 0 Uptime -# 1 Downtime -# -# BL = ARAMIS or ATHOS + def __init__(self, beamline): + self.beamline = beamline = beamline.upper() + + if beamline not in BEAMLINES: + raise ValueError(f'beamline "{beamline}" must be from: {BEAMLINES}') + + prefix = f"SF-STATUS-{beamline}" + + pvname_category = f"{prefix}:CATEGORY" + pvname_downtime = f"{prefix}:DOWNTIME" + + self.pv_category = PV(pvname_category) + self.pv_downtime = PV(pvname_downtime) + + + @property + def category(self): + return self.pv_category.get(as_string=True) + + @property + def downtime(self): + return self.pv_downtime.get(as_string=True) + + def __repr__(self): + return f"{self.category} {self.downtime}"