Skip to content

A generic online monitor showing real-time plots from independent data acquisition systems

License

Notifications You must be signed in to change notification settings

SiLab-Bonn/online_monitor

Repository files navigation

A generic online monitor for real-time plots from independent data acquisition systems

Build Status Coverage Status

Installation

The last stable code is hosted on PyPi. Thus for installation type:

pip install --upgrade pip
pip install online_monitor

Otherwise download the code and run

pip install -e .

You can run the unit tests to check the installation

pytest online_monitor

Usage

For a demo type into the console:

  start_online_monitor

To stop all instances of online_monitor (e.g. converter, receiver, etc), type

stop_online_monitor

Info

This package is a meta package providing all tools to convert data in real time distributed on several PCs and to visulize them in real time (> 20 Hz). The online monitor is based on a concept with these enitites:

  • Producer: This is your DAQ system that sends data via a ZMQ PUB socket. The data format is your choise. The producer is not part of the online_monitor. For testing / debugging a simulation producer is provided that can generate fake data.

  • Converter: A converter converts data from one (ore more) producers (e.g. histogramming) and publishes the converted data as a ZMQ PUB socket. Since the converter is specific to your data type you have to define the converter! Take a look at the example folder.

  • Receiver: A receiver connects to a converter and defines the plots to be shown. Since the receiver is specific to your wished / data you have to define the receiver! Take a look at the example folder.

Complex chains are possible with several parallel/interconnected converters, receivers and producers. One configuraion *. yaml file defines your system. Take a look at the example folder or the main folder for a configuration.yaml example.

There are start script to start the online monitor and/or the converters and producers simulating data.

To start the online monitor including simulation producers / converters type into the console:

start_online_monitor configuration.yaml

To start the converters type:

start_converters configuration.yaml

Custom plugins

To use your own online_monitor plugins within your e.g. DAQ system, you have to add your respective converter / receiver/ etc paths to the OnlineMonitor.ini. This can be done by using the plugin_online_monitor script, running

plugin_online_monitor path/to/my/plugin/folder

or

cd path/to/my/plugin/folder
plugin_online_monitor

This makes all converter / receiver / etc. instances within path/to/plugin/folder available to online_monitor.

Custom receiver

Have a look at the examples. When building your custom receiver, use pyqtgraph only for plotting-related tasks e.g. pg.ImageItem etc. Avoid using pyqtgraph for building generic widgets (especially the deprecated QtGui submodule), instead use pyqt5 directly:

from PyQt5 import QtWidgets, QtCore

my_custom_label = QtWidgets.QLabel("My label")
my_custom_double_spinbox = QtWidgets.QDoubleSpinBox()
my_custom_grid_layout = QtWidgets.QGridLayout()
my_custom_signal = QtCore.pyqtSignal(str)
...

Custom producer

The producer allows to replay previously recorded data at a custom replay rate. For most SiLAB-type DAQ systems, the silab_default_producer works out-of-the box and is automatically availabe after install.

Testing

Everything is tested on Windows and Linux for Python 3.8/9 with coverage. Have a look at the tests as well as the respective GH actions and coverall.io pages.