devices module¶
This module contains a class for each device implementing device configuration, communication and saving of measurement data.
To be compatible with the sampling loop of multilog each device must implement the following functions:
init_output(self, directory: str) -> None
sample(self) -> Any
save_measurement(self, time_abs: float, time_rel: datetime, sampling: Any) -> None
Daq6510¶
- class multilog.devices.daq6510.Daq6510(config, name='Daq6510')¶
Bases:
objectKeythley multimeter DAQ6510. Implementation bases on v1 of multilog and shall be refactored in future.
- __init__(config, name='Daq6510')¶
Setup serial interface, configure device and prepare sampling.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – Device name.
- property card1_id¶
Get the ID of Card #1.
- property card2_id¶
Get the ID of Card #2.
- property device_id¶
Get the device ID.
- getLatestSample()¶
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- read()¶
Read out all channels.
- Returns:
measurement data
- Return type:
str
- reset()¶
Reset device to factory default.
- sample()¶
Read sampling form device and convert values to specified format.
- Returns:
{sensor name: measurement value}
- Return type:
dict
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to file.
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (dict) – sampling data, as returned from sample()
- setLatestSample(sampling)¶
- set_display_message(message='hello world')¶
Set a message on the display.
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
IfmFlowmeter¶
- class multilog.devices.ifm_flowmeter.IfmFlowmeter(config, name='IfmFlowmeter')¶
Bases:
object- __init__(config, name='IfmFlowmeter')¶
Prepare sampling.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – device name.
- check_leakage()¶
Evaluate flow balance as specified in config to check for leakage. If leakage is detected a discord message is sent.
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- sample()¶
Read sampling form device and convert values to readable format.
- Returns:
{sensor name: measurement value}
- Return type:
dict
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to file.
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (dict) – sampling data, as returned from sample()
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- multilog.devices.ifm_flowmeter.send_discord_message(msg)¶
Bot for sending discord messages on a pre-configured computer. Refer to the discord docs for additional information.
Eurotherm¶
- class multilog.devices.eurotherm.Eurotherm(config, name='Eurotherm')¶
Bases:
object- __init__(config, name='Eurotherm')¶
Prepare sampling.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – device name.
- getConectionType()¶
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- sample()¶
Read sampling form device.
- Returns:
{sensor name: measurement value}
- Return type:
dict
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to file.
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (dict) – sampling data, as returned from sample()
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
OptrisIP640¶
- class multilog.devices.optris_ip640.OptrisIP640(config, name='OptrisIP640', xml_dir='./')¶
Bases:
objectOptris Ip640 IR Camera.
- __init__(config, name='OptrisIP640', xml_dir='./')¶
Initialize communication and configure device.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – Device name.
xml_dir (str, optional) – Directory for xml-file with device configuration. Defaults to “./”.
- init_output(directory='./')¶
Initialize the output subdirectory and csv file..
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- static plot_to_file(sampling, filename)¶
Create a plot of the temperature distribution. This function has to be called from a subprocess because matplotlib is not threadsave.
- Parameters:
sampling (numpy array) – IR image as returned from sample()
filename (str) – filepath of plot
- sample()¶
Read image form device.
- Returns:
IR image (2D temperature filed)
- Return type:
numpy.array
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to files: - numpy array with temperature distribution - png file with 2D IR image - csv with metadata
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (numpy.array) – sampling data, as returned from sample()
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
PyrometerLumasense¶
- class multilog.devices.pyrometer_lumasense.PyrometerLumasense(config, name='PyrometerLumasense')¶
Bases:
objectLumasense pyrometer, e.g. IGA-6-23 or IGAR-6-adv.
- __init__(config, name='PyrometerLumasense')¶
Setup serial interface, configure device.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – Device name.
- property emissivity¶
Read the current emissivity.
- property focus¶
Get focuspoint.
- getLatestSample()¶
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- property intrument_id¶
Get the instrument id.
- sample()¶
Read temperature form device.
- Returns:
temperature reading.
- Return type:
float
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to file.
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (float) – temperature, as returned from sample()
- setLatestSample(sampling)¶
- set_emissivity(emissivity)¶
Set emissivity and check if it was accepted.
- set_t90(t90)¶
Set t90 and check if it was accepted.
- set_transmissivity(transmissivity)¶
Set transmissivity and check if it was accepted.
- property t90¶
Reat the current t90 value.
- property transmissivity¶
Read the current transmissivity.
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
PyrometerArrayLumasense¶
- class multilog.devices.pyrometer_array_lumasense.PyrometerArrayLumasense(config, name='PyrometerArrayLumasense')¶
Bases:
objectLumasense pyrometer, e.g. Series 600.
- __init__(config, name='PyrometerArrayLumasense')¶
Setup serial interface, configure device.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – Device name.
- getLatestSample()¶
- get_heat_id(head_number)¶
Get the id of a certain head.
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- read_sensor(head_number)¶
Read temperature of a certain head.
- sample()¶
Read temperature form all heads.
- Returns:
{head name: temperature}.
- Return type:
dict
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to file.
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (dict) – measurement data, as returned from sample()
- setLatestSample(sampling)¶
- set_emissivity(head_number, emissivity)¶
Set emissivity for a certain head.
- set_t90(head_number, t90)¶
Set t90 for a certain head.
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
BaslerCamera¶
- class multilog.devices.basler_camera.BaslerCamera(config, name='BaslerCamera')¶
Bases:
objectBasler optical camera.
- __init__(config, name='BaslerCamera')¶
Setup pypylon, configure device.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – Device name.
- init_output(directory='./')¶
Initialize the output subdirectory and csv file..
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- sample()¶
Read latest image from device.
- Returns:
image.
- Return type:
numpy.array
- save_measurement(time_abs, time_rel, sampling)¶
Write measurement data to files: - jpg file with image - csv with metadata
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (numpy.array) – image as returned from sample()
- set_frame_rate(frame_rate)¶
Set frame rate for continous sampling. The latest frame is then grabbed by the sample function.
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
ProcessConditionLogger¶
- class multilog.devices.process_condition_logger.ProcessConditionLogger(config, name='ProcessConditionLogger')¶
Bases:
objectVirtual device for logging of process contidions. Instead of sampling a physical devices the sampling are read from the user input fields in the GUI.
- __init__(config, name='ProcessConditionLogger')¶
Prepare sampling.
- Parameters:
config (dict) – device configuration (as defined in config.yml in the devices-section).
name (str, optional) – device name.
- init_output(directory='./')¶
Initialize the csv output file.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.
- sample()¶
This function just exists to fit into the sampling structure of multilog. Data is directly updated upon changes in the GUI.
- Returns:
{process condition: user input}
- Return type:
dict
- save_measurement(time_abs, time_rel, sampling)¶
Write sampling data to file. This function creates to files: - A csv file with all values for each timestep (follwoing the standard sampling procedure) - A readme.md file with the initial values and timestamp + value for each change in the process conditons (similar as people write it to their labbook)
- Parameters:
time_abs (datetime) – measurement timestamp.
time_rel (float) – relative time of measurement.
sampling (dict) – sampling data, as returned from sample()
- write_nomad_file(directory='./')¶
Write .archive.yaml file based on device configuration.
- Parameters:
directory (str, optional) – Output directory. Defaults to “./”.