before MX beamtime October 2024
This commit is contained in:
@ -9,8 +9,10 @@ from slic.core.acquisition.detcfg import DetectorConfig
|
|||||||
|
|
||||||
# TODO: JF settings regarding raw conversion, compression, etc.
|
# TODO: JF settings regarding raw conversion, compression, etc.
|
||||||
detectors = [
|
detectors = [
|
||||||
"JF16T03V01",
|
"JF16T03V02",
|
||||||
|
# "JF16T03V01",
|
||||||
# "JF17T16V01",
|
# "JF17T16V01",
|
||||||
|
"JF20T01V01",
|
||||||
]
|
]
|
||||||
|
|
||||||
# ALLOWED_PARAMS = dict(
|
# ALLOWED_PARAMS = dict(
|
||||||
@ -160,6 +162,7 @@ channels_Xeye = ["SARES30-CAMS156-XE:intensity",
|
|||||||
"SARES30-CAMS156-XE:y_fwhm",
|
"SARES30-CAMS156-XE:y_fwhm",
|
||||||
"SARES30-CAMS156-XE:y_profile",
|
"SARES30-CAMS156-XE:y_profile",
|
||||||
"SARES30-CAMS156-XE:y_rms",
|
"SARES30-CAMS156-XE:y_rms",
|
||||||
|
# "SARES30-CAMS156-XE:FPICTURE",
|
||||||
]
|
]
|
||||||
|
|
||||||
######################
|
######################
|
||||||
@ -207,15 +210,49 @@ channels_PSSS059_LB = [
|
|||||||
###################################
|
###################################
|
||||||
## Bernina channels
|
## Bernina channels
|
||||||
# Beam position monitor PBPS113
|
# Beam position monitor PBPS113
|
||||||
channels_Bernina = [
|
#channels_Bernina = [
|
||||||
|
# "SAROP21-PBPS103:INTENSITY",
|
||||||
|
# "SAROP21-PBPS103:XPOS",
|
||||||
|
# "SAROP21-PBPS103:YPOS",
|
||||||
|
# #"SAROP21-PPRM113:FPICTURE",
|
||||||
|
# "SAROP21-PPRM113:intensity",
|
||||||
|
# "SAROP21-PPRM113:x_fit_mean",
|
||||||
|
# "SAROP21-PPRM113:y_fit_mean",
|
||||||
|
#]
|
||||||
|
|
||||||
|
channels_PBPS113_bernina = [
|
||||||
"SAROP21-PBPS103:INTENSITY",
|
"SAROP21-PBPS103:INTENSITY",
|
||||||
|
"SAROP21-PBPS103:INTENSITY_UJ",
|
||||||
|
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD0",
|
||||||
|
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD1",
|
||||||
|
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD2",
|
||||||
|
"SAROP21-PBPS103:Lnk9Ch0-PP_VAL_PD3",
|
||||||
"SAROP21-PBPS103:XPOS",
|
"SAROP21-PBPS103:XPOS",
|
||||||
"SAROP21-PBPS103:YPOS",
|
"SAROP21-PBPS103:YPOS",
|
||||||
#"SAROP21-PPRM113:FPICTURE",
|
|
||||||
"SAROP21-PPRM113:intensity",
|
|
||||||
"SAROP21-PPRM113:x_fit_mean",
|
|
||||||
"SAROP21-PPRM113:y_fit_mean",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
channels_PPRM113_bernina = [
|
||||||
|
"SAROP21-PPRM113:intensity",
|
||||||
|
"SAROP21-PPRM113:x_center_of_mass",
|
||||||
|
"SAROP21-PPRM113:x_fit_amplitude",
|
||||||
|
"SAROP21-PPRM113:x_fit_mean",
|
||||||
|
"SAROP21-PPRM113:x_fit_offset",
|
||||||
|
"SAROP21-PPRM113:x_fit_standard_deviation",
|
||||||
|
"SAROP21-PPRM113:x_fwhm",
|
||||||
|
"SAROP21-PPRM113:x_profile",
|
||||||
|
"SAROP21-PPRM113:x_rms",
|
||||||
|
"SAROP21-PPRM113:y_center_of_mass",
|
||||||
|
"SAROP21-PPRM113:y_fit_amplitude",
|
||||||
|
"SAROP21-PPRM113:y_fit_mean",
|
||||||
|
"SAROP21-PPRM113:y_fit_offset",
|
||||||
|
"SAROP21-PPRM113:y_fit_standard_deviation",
|
||||||
|
"SAROP21-PPRM113:y_fwhm",
|
||||||
|
"SAROP21-PPRM113:y_profile",
|
||||||
|
"SAROP21-PPRM113:y_rms",
|
||||||
|
# "SAROP31-PPRM113:FPICTURE", # full pictures for debugging purposes at the moment, from _ib process
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
# Beam position monitor PBPS113
|
# Beam position monitor PBPS113
|
||||||
channels_PBPS113 = [
|
channels_PBPS113 = [
|
||||||
@ -360,3 +397,12 @@ bs_channels = (
|
|||||||
+ channels_other
|
+ channels_other
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bs_channels_bernina_DCM = (
|
||||||
|
channels_gas_monitor
|
||||||
|
# + channels_RF
|
||||||
|
+ channels_PBPS053
|
||||||
|
+ channels_PSSS059
|
||||||
|
+ channels_PSSS059_LB
|
||||||
|
+ channels_PBPS113_bernina
|
||||||
|
# + channels_PPRM113_bernina
|
||||||
|
)
|
||||||
|
@ -193,9 +193,84 @@ pvs_PPRM053 = [
|
|||||||
|
|
||||||
###################
|
###################
|
||||||
# Bernina mono
|
# Bernina mono
|
||||||
pvs_Bernina = [
|
#pvs_Bernina = [
|
||||||
|
# "SAROP21-ARAMIS:ENERGY_SP",
|
||||||
|
# "SAROP21-ARAMIS:ENERGY",
|
||||||
|
# "SAROP21-PBPS103:MOTOR_X1.DRBV",
|
||||||
|
# "SAROP21-PBPS103:MOTOR_Y1.DRBV",
|
||||||
|
# "SAROP21-PBPS103:MOTOR_X1.RBV",
|
||||||
|
# "SAROP21-PBPS103:MOTOR_Y1.RBV",
|
||||||
|
# "SAROP21-PBPS103:MOTOR_PROBE.RBV",
|
||||||
|
# "SAROP21-PPRM113:MOTOR_PROBE.RBV"
|
||||||
|
#]
|
||||||
|
pvs_photon_energy_bernina = [
|
||||||
"SAROP21-ARAMIS:ENERGY_SP",
|
"SAROP21-ARAMIS:ENERGY_SP",
|
||||||
"SAROP21-ARAMIS:ENERGY",
|
"SAROP21-ARAMIS:ENERGY",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_OAPU092_bernina = [
|
||||||
|
"SAROP21-OAPU044:MOTOR_X.RBV",
|
||||||
|
"SAROP21-OAPU044:MOTOR_Y.RBV",
|
||||||
|
"SAROP21-OAPU044:MOTOR_W.RBV",
|
||||||
|
"SAROP21-OAPU044:MOTOR_H.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_OOMV092_bernina = [
|
||||||
|
"SAROP21-OOMV092:W_X.RBV",
|
||||||
|
"SAROP21-OOMV092:W_Y.RBV",
|
||||||
|
"SAROP21-OOMV092:W_RX.RBV",
|
||||||
|
"SAROP21-OOMV092:W_RZ.RBV",
|
||||||
|
"SAROP21-OOMV092:BU.RBV",
|
||||||
|
"SAROP21-OOMV092:BD.RBV",
|
||||||
|
"SAROP21-OOMV092:VS1.RBV",
|
||||||
|
"SAROP21-OOMV092:VS2.RBV",
|
||||||
|
"SAROP21-OOMV092:VS3.RBV",
|
||||||
|
"SAROP21-OOMV092:TX.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_PPRM094_bernina = [
|
||||||
|
"SAROP21-PPRM113:MOTOR_PROBE",
|
||||||
|
#"SAROP21-PPRM113:FPICTURE",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_OOMV096_bernina = [
|
||||||
|
"SAROP21-OOMV096:W_X.RBV",
|
||||||
|
"SAROP21-OOMV096:W_Y.RBV",
|
||||||
|
"SAROP21-OOMV096:W_RX.RBV",
|
||||||
|
"SAROP21-OOMV096:W_RZ.RBV",
|
||||||
|
"SAROP21-OOMV096:BU.RBV",
|
||||||
|
"SAROP21-OOMV096:BD.RBV",
|
||||||
|
"SAROP21-OOMV096:VS1.RBV",
|
||||||
|
"SAROP21-OOMV096:VS2.RBV",
|
||||||
|
"SAROP21-OOMV096:VS3.RBV",
|
||||||
|
"SAROP21-OOMV096:TX.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_PSCR097_bernina = [
|
||||||
|
"SAROP21-PSCR097:MOTOR_Y1.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_ODCM098_bernina = [
|
||||||
|
"SAROP21-ODCM098:RX12.RBV", # BRAGG
|
||||||
|
"SAROP21-ODCM098:TX12.RBV", # Horizontal
|
||||||
|
"SAROP21-ODCM098:T2.RBV", # Crystal gap T2
|
||||||
|
"SAROP21-ODCM098:RZ1.RBV", # 1st xtal roll
|
||||||
|
"SAROP21-ODCM098:RZ2.RBV", # 2nd xtal roll
|
||||||
|
"SAROP21-ODCM098:RX2.RBV", # 2nd xtal pitch
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_OAPU102_bernina = [
|
||||||
|
"SAROP21-OAPU092:MOTOR_X.RBV",
|
||||||
|
"SAROP21-OAPU092:MOTOR_Y.RBV",
|
||||||
|
"SAROP21-OAPU092:MOTOR_W.RBV",
|
||||||
|
"SAROP21-OAPU092:MOTOR_H.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_PSRD103_bernina = [
|
||||||
|
"SAROP21-PSRD103:MOTOR_PROBE",
|
||||||
|
]
|
||||||
|
|
||||||
|
pvs_PBPS113_bernina = [
|
||||||
"SAROP21-PBPS103:MOTOR_X1.DRBV",
|
"SAROP21-PBPS103:MOTOR_X1.DRBV",
|
||||||
"SAROP21-PBPS103:MOTOR_Y1.DRBV",
|
"SAROP21-PBPS103:MOTOR_Y1.DRBV",
|
||||||
"SAROP21-PBPS103:MOTOR_X1.RBV",
|
"SAROP21-PBPS103:MOTOR_X1.RBV",
|
||||||
@ -204,6 +279,17 @@ pvs_Bernina = [
|
|||||||
"SAROP21-PPRM113:MOTOR_PROBE.RBV"
|
"SAROP21-PPRM113:MOTOR_PROBE.RBV"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
pvs_OPPI113_bernina = [
|
||||||
|
"SAROP21-OPPI113:MOTOR_X1.RBV", # X1 instead of X
|
||||||
|
"SAROP21-OPPI113:MOTOR_Y1.RBV", # Y1 instead of X
|
||||||
|
"SAROP21-OPPI113:TC1", # Pulse picker temperature
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
pvs_PPRM113 = [
|
||||||
|
"SAROP21-PPRM113:MOTOR_PROBE.RBV",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# First Cristallina horizontal offset mirror OOMH067
|
# First Cristallina horizontal offset mirror OOMH067
|
||||||
@ -347,8 +433,8 @@ pvs_OATA150 = [
|
|||||||
####################
|
####################
|
||||||
# Pulse picker OPPI151
|
# Pulse picker OPPI151
|
||||||
pvs_OPPI151 = [
|
pvs_OPPI151 = [
|
||||||
# "SAROP31-OPPI151:MOTOR_X.RBV", # Not available
|
"SAROP31-OPPI151:MOTOR_X1.RBV", # X1 instead of X
|
||||||
# "SAROP31-OPPI151:MOTOR_Y.RBV", # Not available
|
"SAROP31-OPPI151:MOTOR_Y1.RBV", # Y1 instead of X
|
||||||
"SAROP31-OPPI151:TC1", # Pulse picker temperature
|
"SAROP31-OPPI151:TC1", # Pulse picker temperature
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -528,3 +614,42 @@ pv_channels = (
|
|||||||
|
|
||||||
# + pvs_attocube
|
# + pvs_attocube
|
||||||
# + pvs_smaract_juraj
|
# + pvs_smaract_juraj
|
||||||
|
|
||||||
|
pv_channels_front_end = (
|
||||||
|
pvs_machine
|
||||||
|
# + pvs_RF
|
||||||
|
# + pvs_undulator
|
||||||
|
+ pvs_gas_monitor
|
||||||
|
+ pvs_OAPU044
|
||||||
|
+ pvs_PBPS053
|
||||||
|
+ pvs_OATT053
|
||||||
|
+ pvs_PPRM053
|
||||||
|
+ pvs_PSSS059
|
||||||
|
+ pvs_OOMH067
|
||||||
|
+ pvs_PSCR068
|
||||||
|
)
|
||||||
|
|
||||||
|
pv_channels_bernina = (
|
||||||
|
pvs_machine
|
||||||
|
# + pvs_RF
|
||||||
|
# + pvs_undulator
|
||||||
|
+ pvs_gas_monitor
|
||||||
|
+ pvs_OAPU044
|
||||||
|
+ pvs_PBPS053
|
||||||
|
+ pvs_OATT053
|
||||||
|
+ pvs_PPRM053
|
||||||
|
+ pvs_PSSS059
|
||||||
|
+ pvs_OOMH067
|
||||||
|
+ pvs_PSCR068
|
||||||
|
+ pvs_photon_energy_bernina
|
||||||
|
+ pvs_OAPU092_bernina
|
||||||
|
+ pvs_OOMV092_bernina
|
||||||
|
+ pvs_PPRM094_bernina
|
||||||
|
+ pvs_OOMV096_bernina
|
||||||
|
+ pvs_PSCR097_bernina
|
||||||
|
+ pvs_ODCM098_bernina
|
||||||
|
+ pvs_OAPU102_bernina
|
||||||
|
+ pvs_PSRD103_bernina
|
||||||
|
+ pvs_PBPS113_bernina
|
||||||
|
+ pvs_PPRM113
|
||||||
|
)
|
||||||
|
@ -133,9 +133,15 @@ from crq_exp.diffractometer import Diffractometer
|
|||||||
diffractometer = Diffractometer("diffractometer")
|
diffractometer = Diffractometer("diffractometer")
|
||||||
|
|
||||||
|
|
||||||
|
# Dilution fridge
|
||||||
from crq_exp.dilsc import Dilution
|
from crq_exp.dilsc import Dilution
|
||||||
|
|
||||||
dilution = Dilution()
|
try:
|
||||||
|
dilution = Dilution()
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Error: Could not connect to dilution fridge. {e}")
|
||||||
|
dilution = None
|
||||||
|
|
||||||
|
|
||||||
# MX adajustables
|
# MX adajustables
|
||||||
import mx.mx_adjustables
|
import mx.mx_adjustables
|
||||||
@ -145,10 +151,11 @@ import mx.mx_adjustables
|
|||||||
|
|
||||||
# TODO: requires the stand client, need small howto how to start and configure or let it run all the time
|
# TODO: requires the stand client, need small howto how to start and configure or let it run all the time
|
||||||
from slic.core.acquisition.spreadsheet import Spreadsheet
|
from slic.core.acquisition.spreadsheet import Spreadsheet
|
||||||
|
from stand.time import Time
|
||||||
|
|
||||||
# setup spreadsheet for transmission to stand
|
|
||||||
spreadsheet = Spreadsheet(
|
adjs_for_spreadsheet = {
|
||||||
{
|
#"Time": Time(),
|
||||||
"Transmission": attenuator.trans1st,
|
"Transmission": attenuator.trans1st,
|
||||||
"Upstream Transmission": upstream_attenuator.trans1st,
|
"Upstream Transmission": upstream_attenuator.trans1st,
|
||||||
"Energy_setpoint": undulators,
|
"Energy_setpoint": undulators,
|
||||||
@ -160,12 +167,27 @@ spreadsheet = Spreadsheet(
|
|||||||
"TRYBASE": diffractometer.try_base,
|
"TRYBASE": diffractometer.try_base,
|
||||||
"THETA": diffractometer.theta,
|
"THETA": diffractometer.theta,
|
||||||
"TWOTHETA": diffractometer.twotheta,
|
"TWOTHETA": diffractometer.twotheta,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if dilution is not None:
|
||||||
|
adjs_dilsc = {
|
||||||
"Magnet_X": dilution.x,
|
"Magnet_X": dilution.x,
|
||||||
"Magnet_Y": dilution.y,
|
"Magnet_Y": dilution.y,
|
||||||
"Magnet_Z": dilution.z,
|
"Magnet_Z": dilution.z,
|
||||||
"DilSc_T_chip": dilution.T_chip,
|
"DilSc_T_chip": dilution.T_chip,
|
||||||
"DilSc_T_pucksensor": dilution.T_pucksensor,
|
"DilSc_T_pucksensor": dilution.T_pucksensor,
|
||||||
},
|
}
|
||||||
|
adjs_for_spreadsheet.update(adjs_dilsc)
|
||||||
|
|
||||||
|
|
||||||
|
# temporary mono
|
||||||
|
from exp_temp.mono import Mono_rotation
|
||||||
|
|
||||||
|
|
||||||
|
# setup spreadsheet for transmission to stand
|
||||||
|
spreadsheet = Spreadsheet(
|
||||||
|
adjs_for_spreadsheet,
|
||||||
placeholders=("comment", "sample", "run_usable"),
|
placeholders=("comment", "sample", "run_usable"),
|
||||||
host="saresc-vcons-02.psi.ch",
|
host="saresc-vcons-02.psi.ch",
|
||||||
port=9090,
|
port=9090,
|
||||||
@ -187,26 +209,47 @@ except Exception as error:
|
|||||||
|
|
||||||
################# DAQ Setup #################
|
################# DAQ Setup #################
|
||||||
instrument = "cristallina"
|
instrument = "cristallina"
|
||||||
|
experiment_type = "MX" # "MX" or "Q" for the different setups and detector configurations
|
||||||
|
|
||||||
from pgroups import pgroup, pgroup_scratch
|
from pgroups import pgroup, pgroup_scratch
|
||||||
|
|
||||||
|
|
||||||
# setup pgroup specific logger
|
# setup pgroup specific logger
|
||||||
setup_logging_pgroup(pgroup)
|
setup_logging_pgroup(pgroup)
|
||||||
|
|
||||||
daq = SFAcquisition(
|
logger.info(f"Using Cristallina{experiment_type} setup for detectors.")
|
||||||
instrument,
|
|
||||||
pgroup,
|
|
||||||
default_channels=bs_channels,
|
|
||||||
default_pvs=pv_channels,
|
|
||||||
default_detectors=detectors,
|
|
||||||
rate_multiplicator=1,
|
|
||||||
spreadsheet=spreadsheet,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
if experiment_type == "MX":
|
||||||
|
daq = SFAcquisition(
|
||||||
|
instrument,
|
||||||
|
pgroup,
|
||||||
|
default_channels=bs_channels,
|
||||||
|
default_pvs=pv_channels,
|
||||||
|
default_detectors=detectors_MX,
|
||||||
|
rate_multiplicator=1,
|
||||||
|
spreadsheet=spreadsheet,
|
||||||
|
)
|
||||||
|
elif experiment_type == "Q":
|
||||||
|
daq = SFAcquisition(
|
||||||
|
instrument,
|
||||||
|
pgroup,
|
||||||
|
default_channels=bs_channels,
|
||||||
|
default_pvs=pv_channels,
|
||||||
|
default_detectors=detectors,
|
||||||
|
rate_multiplicator=1,
|
||||||
|
spreadsheet=spreadsheet,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
logger.error(f"Experiment type {experiment_type} not supported. Exiting.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
daq.update_config_pvs()
|
||||||
|
|
||||||
# There is a new EPICS buffer, so the archiver is no longer used. This makes sure we are taking PVs from the right place.
|
# There is a new EPICS buffer, so the archiver is no longer used. This makes sure we are taking PVs from the right place.
|
||||||
daq.update_config_pvs()
|
try:
|
||||||
|
daq.update_config_pvs()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
from acquisition import multiple_daqs
|
from acquisition import multiple_daqs
|
||||||
|
|
||||||
@ -228,5 +271,5 @@ check_intensity_gas_monitor = PVCondition(
|
|||||||
scan = Scanner(default_acquisitions=[daq], condition=check_intensity_gas_monitor)
|
scan = Scanner(default_acquisitions=[daq], condition=check_intensity_gas_monitor)
|
||||||
gui = GUI(scan, show_goto=True, show_spec=True)
|
gui = GUI(scan, show_goto=True, show_spec=True)
|
||||||
|
|
||||||
logger.info(f"Running at {instrument} with pgroup {pgroup}.")
|
logger.info(f"Running at {instrument} with pgroup {pgroup}. Experiment type: {experiment_type}.")
|
||||||
logger.info("Loading finished.")
|
logger.info("Loading finished.")
|
||||||
|
6
exp_temp/mono.py
Normal file
6
exp_temp/mono.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from slic.devices.general.motor import Motor
|
||||||
|
|
||||||
|
|
||||||
|
Mono_rotation = Motor("SARES30-MOBI2:MOT_RY") # large rotation stage
|
||||||
|
|
||||||
|
|
@ -33,7 +33,11 @@ pgroup_scratch = "p19150" # Scratch
|
|||||||
|
|
||||||
# pgroup = "p21741" # CrQ - DilSc - SAXS LiHoF4
|
# pgroup = "p21741" # CrQ - DilSc - SAXS LiHoF4
|
||||||
|
|
||||||
#pgroup = "p21735" # Cr-MX Aller 2024-06-04
|
# pgroup = "p21735" # Cr-MX Aller 2024-06-04
|
||||||
# pgroup = "p21736" # Cr-MX Weik 2024-06-07
|
# pgroup = "p21736" # Cr-MX Weik 2024-06-07
|
||||||
|
|
||||||
pgroup = "p21977" # CrQ - Dilsc - LiErF4
|
# pgroup = "p21977" # CrQ - Dilsc - LiErF4
|
||||||
|
|
||||||
|
# pgroup = "p21981" # CrMX JFJ commissioning and other related detector bullocks
|
||||||
|
pgroup = "p22198" # CrMX Fromme - 2024-10-25
|
||||||
|
|
||||||
|
25
stand/time.py
Normal file
25
stand/time.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from slic.core.adjustable import Adjustable
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
class Time(Adjustable):
|
||||||
|
""" Adjustable only for spreadsheet, no other functionality
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(self, "")
|
||||||
|
|
||||||
|
def get_current_value(self):
|
||||||
|
return datetime.datetime.now().replace(microsecond=0).isoformat()
|
||||||
|
|
||||||
|
def is_moving(self):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def set_target_value(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
name = "Time"
|
||||||
|
value = self._printable_value()
|
||||||
|
return f"{name} : {value}"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self._printable_value()
|
Reference in New Issue
Block a user