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
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
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
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
.
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)
...
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.
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.