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: object

Keythley 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 “./”.

class multilog.devices.daq6510.SerialMock

Bases: object

This class is used to mock a serial interface for debugging purposes.

readline()
write(_)

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 “./”.

class multilog.devices.eurotherm.SerialMock

Bases: object

This class is used to mock a serial interface for debugging purposes.

readline()
write(_)

OptrisIP640

class multilog.devices.optris_ip640.OptrisIP640(config, name='OptrisIP640', xml_dir='./')

Bases: object

Optris 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: object

Lumasense 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 “./”.

class multilog.devices.pyrometer_lumasense.SerialMock

Bases: object

This class is used to mock a serial interface for debugging purposes.

readline()
write(_)

PyrometerArrayLumasense

class multilog.devices.pyrometer_array_lumasense.PyrometerArrayLumasense(config, name='PyrometerArrayLumasense')

Bases: object

Lumasense 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 “./”.

class multilog.devices.pyrometer_array_lumasense.SerialMock

Bases: object

This class is used to mock a serial interface for debugging purposes.

readline()
write(_)

BaslerCamera

class multilog.devices.basler_camera.BaslerCamera(config, name='BaslerCamera')

Bases: object

Basler 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: object

Virtual 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 “./”.