Data acquisition

class core.management.commands.readSensor.Command(stdout=None, stderr=None, no_color=False, force_color=False)

Bases: BaseCommand

Main commands for service worker wich reads sensor data and writes them to the database.

check_for_init_request() bool

Check if a sensor initialization has been requested.

Returns:

True is request has been registered, False otherwise.

Return type:

bool

check_init_db_entry() Init

Check if a Init db entry exists. Otherwise a new entry is created.

Returns:

Updated or new generated initialization information

Return type:

Init

check_measurement_db_entry() Measurement

Verify if a system state configuration entry is registered. If not, a new entry is generated.

Returns:

System configuration state

com_devices = None
compute_measurement_data_average(data: dict) dict

Compute mean of sensor measurement results

Parameters:

data (dict) – list of result entries

Returns:

Averaged measurement values

Return type:

dict

create_measurement_result_entry() MeasurementData

Setup result object holding informaiton about a measurement run. A measurement name is assigned and extended by trailing numbers to ensure uniqueness.

Returns:

Model instance of new result entry

Return type:

MeasurementData

ftdi_setups = None
static gen_color(n=200)

Get a random color with (r/g/b)>n

getFTDIcount() int

Get number of FTDI

Returns:

Number of FTDI devices connected to the host system.

Return type:

int

getMQTT() MQTTClient

Use MQTT information to establish a connection to a MQTT broker

Returns:

Client communication interface or if connection failed None.

Return type:

MQTTClient or None

get_MUX_ADDRESS_LIST() list

Read all available mux port addresses and convert to list of hex string.

Retruns:

list[str]: List of hexadecimal strings

get_sensor_data(dev, state, result) dict

Read data from measurement device. It has to be distinguished between different communication interfaces.

handle(*args, **options)

The actual logic of the command. Subclasses must implement this method.

help = 'Reading sensor data and sending to the database'
initComDevices(comports: list[str]) bool

Initialize devices connected to comports i.e /dev/ttyUSB0

Parameters:

comports (list[str]) – List of comport paths.

Returns:

True if sensors were detected, False otherwise

Return type:

bool

initFTDI() bool

Initialize FTDI devices and scan for sensors.

Returns:

True if sensors were detected, false if detection failed.

Return type:

bool

initialize_sensor(sensor, result) None

Assing measurement value model according to sensor type.

label_all_sensors_unconnected()

Set all sensors to unconnected state.

measurementScheduled(state: Measurement) bool

Check if measurement is currently scheduled.

Parameters:

state (Measurement) – Current system state

Returns:

True if measurement is scheduled, False otherwise

Return type:

bool

mqtt_client = None
register_sensor(sensor) None

Write information accquired by driver module to system database.

reset_measurement_info() None

Set number of connected sensors to 0 this causes the Quick start button to disappear.

runMeasurement() None

Perfom a measurement while measurement is scheduled and not stopped. Information from sensors is requested and the results are written to the database.

run_measurement(dev, state, result, mode) None

Check if a measurement has been requested and fetch values from each sensor. If sensors repond faster then requested by the measurement frequency additional values are acquired. An averaged value is returned that matches the meaurement frequency closely.

sensor_obj = []
setup_initialzation(dev, *args) None

Depending on the device type select an initialization procedure to check if the device presents one or more sensors and is working properly.

store_data(data: dict, result: MeasurementData, mode: str) None

Write measurement data to database depending on the selected server mode old measurements are overwritten or a new database entry is generated.

Parameters:
  • data (dict) – New measurement values

  • reult (MeasurementData) – Current measurement case entry

  • mode (str) – Data retention mode

updateSensorCounts(state: Measurement) None

Evaluate KnownSensor entries and count sensors communicating via the supported protocols. Update the system state accordingly

wait_for_db(t=1, mqtt_client=None)

Wait until database is accessbile

Measurement data export

Holds dataExport class with respective export functions for exporting measurement data in supported file formats and generating zip files for each file format

class measurement_server.modules.dataExport.dataExport(data, file_format: str = 'csv', unified_timescale: bool = False)

Bases: object

Convert stored measurement data with respective function to selected file format

static JSON(data)

Generates json files for each sensor associated with the MeasurementData object data

Parameters:

data – Object generated from MeasurementData

Returns:

Generated json files

Return type:

files

classmethod contains_measurement_values(data)

Check if MeasurementData objects contains measurement values

Parameters:

data (measurement_server.models.measurement.MeasurementData) – Measurement result entry

Returns:

boolean True if measurement values are included in Measurementdata entry, False otherwise

export_formats = [{'extension': 'csv', 'name': 'CSV'}, {'extension': 'json', 'name': 'JSON'}, {'extension': 'nc', 'name': 'NETCDF'}]
static generateZip(files, filename)

Compress a list of files into a zip archive with a given filename

Parameters:
  • files (list) – List with files generated from export functions

  • filename – Generated filename and path

Returns:

Generated zip file

Return type:

zip_filename

classmethod netCDF(data, unified_timescale: bool = False)

Generates NetCDF files for each sensor associated with the MeasurementData object data

Parameters:
  • data – Object generated from MeasurementData

  • unified_timescale (bool) – Option to unify results for sensor types on a common time axis

Returns:

Generated NetCDF files

Return type:

files

prepareCSV(data)

Generate csv files for each sensor associated with the MeasurementData object data

Parameters:

data – Object generated from MeasurementData

Returns:

Generated csv files

Return type:

files

storeCSV(sensor, data)

Store generated csv files

Parameters:
  • sensor – Sensors from SupportedSensors

  • data – Object generated from MeasurementData

Returns:

Generated filename and path for sensor

Return type:

sensor_filename

Helper functions

measurement_server.modules.helpers.get_all_referenced_units()
measurement_server.modules.helpers.get_sensor_counts(data_query)
measurement_server.modules.helpers.get_sensor_plot_information(ignore_plot_show=False)
measurement_server.modules.helpers.isHex(string)