Karabo SCADA Framework - Karabo
Karabo is the European XFEL's SCADA framework. It is a scientific control system that supports plugin (device) development in C++ and Python.
You can find an overview of Karabo on Wikipedia, and in this publication.
The Karabo source repository is on GitHub and also contains our Contributing Guidelines.
Additional documentation is available on ReadTheDocs
Installation
This package facilitates installation of the various Karabo subpackages.
Standalone and Full
For the installation of Karabo we recommend a fresh python environment. If you would like to try Karabo in a standalone fashion on a single machine it's easiest to just run:
pip install 'karabo[full]'
This will install a complete setup, including all essential service devices.
Note that pre-compiled binaries will be installed for supported operating systems. Otherwise pip will attempt to compile the source, which might require additional dependencies to be installed first.
If source compilation fails, we recommend you follow the instructions at https://github.com/European-XFEL/Karabo,
which will result in a self-consistent environment, including a Python interpreter, with
similar functionality to a karabo[full] installation.
After installation you should initialize the environment with either
karabo-activate --init-to PATH --standalone
for a standalone system, or
karabo-activate --init-to PATH [--backbone] --broker-host amqp://{broker:port} --broker-topic {TOPIC}
for headless full installations. The --backbone option sets the core services up, and the --broker-*
parameters are used to configure the installation according to your AMQP broker setup.
Other options
Instead of a full installation, only individual core packages of Karabo can be installed:
karabo[karathon]will install the Karathon Python APIkarabo[cpp]will install the Karabo C++ APIkarabo[bound]will install the Karabo Python bindings to C++karabo[services]will install service tools, allowing to manage installations withkarabo.daemontools
Options can be combined, such as karabo[karathon,services], which will result in a Karathon installation
with service tools installed.
Karabo GUI
If you require the GUI, please install it into a separate Python environment:
pip install karabo.gui
Starting a Karabo standalone system
If you wish to run Karabo standalone you can do this if you have podman or docker installed on the system.
First, run
karabo-activate --init-to $PATH --standalone
Then run
podman-compose -f $PATH/var/containers/compose.yaml up
or (docker-compose ...). This will start containerized version of the services a full
Karabo installation requires:
- A RabbitMQ broker (user: xfel, pw: karabo)
- An Influx database instance for logging (user: infadm, pw: admpwd)
- A Grafana installation with the Influx database as a pre-provisioned source (user: admin, pw: admin)
Note that the Grafana provisioning assumes karabo as the broker topic in use. If you've
used karabo-activate --broker-topic TOPIC you'll need to edit the data source to refer to
a database of TOPIC from inside Grafana.
Additionally, the above setup will use a local sqlite database for projects.
You can switch this to MySQL database by providing the following arguments
to karabo-activate:
--project-db HOST:PORT--project-db-user USER--project-db-pw PASSWORD--project-db-name DATABASE_NAME
Finally, run
$PATH/activate
followed by
karabo-start
Device Development
These packages are not intended to facilitate development of devices for Karabo's C++ API. Please create a self-consistent development environment using the instructions at https://github.com/European-XFEL/Karabo.
Development of devices against these packages using the Bound and Karathon Python APIs should be trivially possibly, as long as the device packages define the correct entrypoints.
For the Karathon API, a line similar to this one should exist in your pyproject.toml:
[project.entry-points."karabo.middlelayer_device"]
PropertyTestMDL = "karabo.middlelayer_devices.property_test:PropertyTestMDL"
For the Bound API, a line similar to this one should exist in your pyproject.toml.
[project.entry-points."karabo.bound_device"]
PropertyTest = "karabo.bound_devices.property_test:PropertyTest"
Metadata
Release files for karabo 3.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| karabo-3.1.2.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| karabo-3.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / karabo-3.1.2.tar.gz
| Download URL | karabo-3.1.2.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27a25f2549f2879738c718db014e78220a83243c44cf5e8a8374cedba4c288cf
|
|
BLAKE2b-256 checksum How to use checksums |
8a4a2c96f4cc9dd9d00d9f653611c63432ecc6d15ec26f42f9e8c5c241185497
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / karabo-3.1.2-py3-none-any.whl
| Download URL | karabo-3.1.2-py3-none-any.whl |
|---|---|
| Size | 12.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9dd3a3c9391081085f7ddd3216a0d1afe36b248aa067a456a64cd57798a8cf4c
|
|
BLAKE2b-256 checksum How to use checksums |
7172db21bad6bc84f2d70d4ed83a67ef0683e0e400ca049aaa96206ab45f3778
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|