diff --git a/cristallina.py b/cristallina.py index 6db21c8..c736c23 100644 --- a/cristallina.py +++ b/cristallina.py @@ -1,15 +1,18 @@ #!/usr/bin/env python import sys import os +from loguru import logger # at the moment this allows us to group the subdirectories as modules easily # TODO: a more general way would be to have this cristallina as a installed package os.chdir("/sf/cristallina/applications/slic/cristallina") -# setup logging -from loguru import logger -def setup_logging(): +def setup_general_logging(): + """ Setup logging to console and files in both the snapshots and + the respective pgroup. + """ + logger.remove() logger.add( sys.stderr, @@ -19,16 +22,16 @@ def setup_logging(): logger.info("Loading started.") # create file handler which logs - # TODO: better directory for general log files? try: logger.add( - "/sf/cristallina/applications/slic/cristallina/log/cristallina.log", + "/sf/cristallina/applications/beamline/snapshots/slic_logs/cristallina.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}", level="DEBUG", rotation="1 week", ) + logger.info("Logging to snapshots.") except PermissionError as e: - logger.warning("Cannot write log file.") + logger.warning("Cannot write log file to snapshots.") logger.warning(e) def setup_logging_pgroup(pgroup, level="INFO"): @@ -39,18 +42,16 @@ def setup_logging_pgroup(pgroup, level="INFO"): level=level, rotation="1 week", ) + logger.info(f"Logging to pgroup {pgroup}.") except PermissionError as e: logger.warning(f"Cannot write log file to pgroup {pgroup}.") # We setup the logging before going further so that # other modules can write startup messages into the log file. -setup_logging() +setup_general_logging() -# TODO: this is later overwritten, probably not intended that way? -# from epics import PV - -# from devices.alignment_laser import AlignmentLaser +from beamline.alignment_laser import AlignmentLaser from slic.gui import GUI from slic.core.adjustable import Adjustable, PVAdjustable, DummyAdjustable @@ -94,7 +95,7 @@ dummy = DummyAdjustable(units="au") from beamline.components import upstream_attenuator, attenuator, shutter, pulsepicker, front_end_attenuator -# from beamline.components import kbHor, kbVer +from beamline.components import kbHor, kbVer from systems.components import cta @@ -110,7 +111,7 @@ def test_attenuator(): logger.warning("No transmission value reported from {attenuator.ID}") -# test_attenuator() +test_attenuator() # Undulators from beamline import undulator diff --git a/spreadsheet.py b/spreadsheet.py index e5612e8..b8e908f 100644 --- a/spreadsheet.py +++ b/spreadsheet.py @@ -24,49 +24,49 @@ n_unds = [6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22] # 14 is t overview = SimpleDevice( "Cristallina Overview", - # OKHB154_X_trans = PVAdjustable("SAROP31-OKBH154:W_X.RBV", internal=True), - # OKHB154_Y_trans = PVAdjustable("SAROP31-OKBH154:W_Y.RBV", internal=True), - # OKHB154_X_rot = PVAdjustable("SAROP31-OKBH154:W_RX.RBV", internal=True), - # OKHB154_Y_rot = PVAdjustable("SAROP31-OKBH154:W_RY.RBV", internal=True), - # OKHB154_Z_rot = PVAdjustable("SAROP31-OKBH154:W_RZ.RBV", internal=True), - # OKBV153_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True), - # OKBV153_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True), - # OKBV153_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True), - # OKBV153_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True), - # OKBV153_Z_rot = PVAdjustable("SAROP31-OKBV153:W_RZ.RBV", internal=True), - # ODMV152_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True), - # ODMV152_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True), - # ODMV152_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True), - # ODMV152_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True), - # ODMV152_COATING = PVAdjustable("SAROP31-ODMV152:COATING_SP", internal=True), + OKHB154_X_trans = PVAdjustable("SAROP31-OKBH154:W_X.RBV", internal=True), + OKHB154_Y_trans = PVAdjustable("SAROP31-OKBH154:W_Y.RBV", internal=True), + OKHB154_X_rot = PVAdjustable("SAROP31-OKBH154:W_RX.RBV", internal=True), + OKHB154_Y_rot = PVAdjustable("SAROP31-OKBH154:W_RY.RBV", internal=True), + OKHB154_Z_rot = PVAdjustable("SAROP31-OKBH154:W_RZ.RBV", internal=True), + OKBV153_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True), + OKBV153_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True), + OKBV153_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True), + OKBV153_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True), + OKBV153_Z_rot = PVAdjustable("SAROP31-OKBV153:W_RZ.RBV", internal=True), + ODMV152_X_trans = PVAdjustable("SAROP31-OKBV153:W_X.RBV", internal=True), + ODMV152_Y_trans = PVAdjustable("SAROP31-OKBV153:W_Y.RBV", internal=True), + ODMV152_X_rot = PVAdjustable("SAROP31-OKBV153:W_RX.RBV", internal=True), + ODMV152_Y_rot = PVAdjustable("SAROP31-OKBV153:W_RY.RBV", internal=True), + ODMV152_COATING = PVAdjustable("SAROP31-ODMV152:COATING_SP", internal=True), OATA150_transmission=PVAdjustable("SAROP31-OATA150:TRANS_SP", internal=True), - # PBPS149_motor_probe = PVAdjustable("SAROP31-PBPS149:MOTOR_PROBE.RBV", internal=True), - # PBPS149_motor_X1 = PVAdjustable("SAROP31-PBPS149:MOTOR_X1.RBV", internal=True), - # PBPS149_motor_Y1 = PVAdjustable("SAROP31-PBPS149:MOTOR_Y1.RBV", internal=True), - # PBPS149_wafer = PVAdjustable("SAROP31-PBPS149:PROBE_SP", internal=True), - # OAPU149_hor_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_X.VAL", internal=True), - # OAPU149_hor_width = PVAdjustable("SAROP31-OAPU149:MOTOR_W.VAL", internal=True), - # OAPU149_vert_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_Y.VAL", internal=True), - # OAPU149_vert_width = PVAdjustable("SAROP31-OAPU149:MOTOR_H.VAL", internal=True), - # OAPU107_hor_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_X.VAL", internal=True), - # OAPU107_hor_width = PVAdjustable("SAROP31-OAPU107:MOTOR_W.VAL", internal=True), - # OAPU107_vert_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_Y.VAL", internal=True), - # OAPU107_vert_width = PVAdjustable("SAROP31-OAPU107:MOTOR_H.VAL", internal=True), - # OOMH084_X_trans = PVAdjustable("SAROP31-OOMH084:W_X.RBV", internal=True), - # OOMH084_Y_trans = PVAdjustable("SAROP31-OOMH084:W_Y.RBV", internal=True), - # OOMH084_X_rot = PVAdjustable("SAROP31-OOMH084:W_RX.RBV", internal=True), - # OOMH084_Y_rot = PVAdjustable("SAROP31-OOMH084:W_RY.RBV", internal=True), - # OOMH084_Z_rot = PVAdjustable("SAROP31-OOMH084:W_RZ.RBV", internal=True), - # OOMH084_COATING = PVAdjustable("SAROP31-OOMH084:COATING_SP", internal=True), - # OOMH067_X_trans = PVAdjustable("SAROP31-OOMH067:W_X.RBV", internal=True), - # OOMH067_Y_trans = PVAdjustable("SAROP31-OOMH067:W_Y.RBV", internal=True), - # OOMH067_X_rot = PVAdjustable("SAROP31-OOMH067:W_RX.RBV", internal=True), - # OOMH067_Y_rot = PVAdjustable("SAROP31-OOMH067:W_RY.RBV", internal=True), - # OOMH067_Z_rot = PVAdjustable("SAROP31-OOMH067:W_RZ.RBV", internal=True), - # OOMH067_COATING = PVAdjustable("SAROP31-OOMH067:COATING_SP", internal=True), - SMARACT_MINI_X=PVAdjustable("SARES30-MCS2750:MOT_2.RBV", internal=True), - SMARACT_MINI_Y=PVAdjustable("SARES30-MCS2750:MOT_3.RBV", internal=True), - SMARACT_MINI_Z=PVAdjustable("SARES30-MCS2750:MOT_1.RBV", internal=True), + PBPS149_motor_probe = PVAdjustable("SAROP31-PBPS149:MOTOR_PROBE.RBV", internal=True), + PBPS149_motor_X1 = PVAdjustable("SAROP31-PBPS149:MOTOR_X1.RBV", internal=True), + PBPS149_motor_Y1 = PVAdjustable("SAROP31-PBPS149:MOTOR_Y1.RBV", internal=True), + PBPS149_wafer = PVAdjustable("SAROP31-PBPS149:PROBE_SP", internal=True), + OAPU149_hor_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_X.VAL", internal=True), + OAPU149_hor_width = PVAdjustable("SAROP31-OAPU149:MOTOR_W.VAL", internal=True), + OAPU149_vert_pos = PVAdjustable("SAROP31-OAPU149:MOTOR_Y.VAL", internal=True), + OAPU149_vert_width = PVAdjustable("SAROP31-OAPU149:MOTOR_H.VAL", internal=True), + OAPU107_hor_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_X.VAL", internal=True), + OAPU107_hor_width = PVAdjustable("SAROP31-OAPU107:MOTOR_W.VAL", internal=True), + OAPU107_vert_pos = PVAdjustable("SAROP31-OAPU107:MOTOR_Y.VAL", internal=True), + OAPU107_vert_width = PVAdjustable("SAROP31-OAPU107:MOTOR_H.VAL", internal=True), + OOMH084_X_trans = PVAdjustable("SAROP31-OOMH084:W_X.RBV", internal=True), + OOMH084_Y_trans = PVAdjustable("SAROP31-OOMH084:W_Y.RBV", internal=True), + OOMH084_X_rot = PVAdjustable("SAROP31-OOMH084:W_RX.RBV", internal=True), + OOMH084_Y_rot = PVAdjustable("SAROP31-OOMH084:W_RY.RBV", internal=True), + OOMH084_Z_rot = PVAdjustable("SAROP31-OOMH084:W_RZ.RBV", internal=True), + OOMH084_COATING = PVAdjustable("SAROP31-OOMH084:COATING_SP", internal=True), + OOMH067_X_trans = PVAdjustable("SAROP31-OOMH067:W_X.RBV", internal=True), + OOMH067_Y_trans = PVAdjustable("SAROP31-OOMH067:W_Y.RBV", internal=True), + OOMH067_X_rot = PVAdjustable("SAROP31-OOMH067:W_RX.RBV", internal=True), + OOMH067_Y_rot = PVAdjustable("SAROP31-OOMH067:W_RY.RBV", internal=True), + OOMH067_Z_rot = PVAdjustable("SAROP31-OOMH067:W_RZ.RBV", internal=True), + OOMH067_COATING = PVAdjustable("SAROP31-OOMH067:COATING_SP", internal=True), + # SMARACT_MINI_X=PVAdjustable("SARES30-MCS2750:MOT_2.RBV", internal=True), + # SMARACT_MINI_Y=PVAdjustable("SARES30-MCS2750:MOT_3.RBV", internal=True), + # SMARACT_MINI_Z=PVAdjustable("SARES30-MCS2750:MOT_1.RBV", internal=True), ) diff --git a/stand/client.py b/stand/client.py new file mode 100644 index 0000000..974db2a --- /dev/null +++ b/stand/client.py @@ -0,0 +1,36 @@ +import requests +import json + + +class Client: + def __init__(self, host="127.0.0.1", port=9090): + self.host = host + self.port = port + self.session = requests.Session() + + def add_row(self, **kwargs): + addr = self._make_addr() + resp = self.session.patch(addr, json=kwargs) + return ResponseWrapper(resp) + + def get(self): + addr = self._make_addr() + resp = self.session.get(addr) + return ResponseWrapper(resp) + + def clear(self): + addr = self._make_addr() + resp = self.session.delete(addr) + return ResponseWrapper(resp) + + def _make_addr(self): + return f"http://{self.host}:{self.port}/" + + +class ResponseWrapper: + def __init__(self, resp): + resp.raise_for_status() + self.resp = resp + + def __repr__(self): + return self.resp.text