Skip to main content

The Karabo SCADA system

Project description

Karabo SCADA Framework - Karabo

Karabo Badge PyPI - Version PyPI - Python Version PyPI - License PyPI - Wheel GitHub language count GitHub top language GitHub contributors GitHub commit activity GitHub Repo stars

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 API
  • karabo[cpp] will install the Karabo C++ API
  • karabo[bound] will install the Karabo Python bindings to C++
  • karabo[services] will install service tools, allowing to manage installations with karabo.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"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

karabo-3.0.9.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

karabo-3.0.9-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file karabo-3.0.9.tar.gz.

File metadata

  • Download URL: karabo-3.0.9.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for karabo-3.0.9.tar.gz
Algorithm Hash digest
SHA256 d9268476eefa8f83a613fff8d97b7c722218cf1fba9299c4da26a4354ff1a766
MD5 5e9d3594be2bb87b6f3f61b420b37695
BLAKE2b-256 0f013f5a89a40945cfef3e0c50d0dc9b93f6dccff45b504debd0c5cda58996df

See more details on using hashes here.

File details

Details for the file karabo-3.0.9-py3-none-any.whl.

File metadata

  • Download URL: karabo-3.0.9-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for karabo-3.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 bffff1a8e7dbd0524a9fd19950289afca68fd60ad6632e015c702355bcaa2a20
MD5 b8139b6d839059a8878b84dfedb40c79
BLAKE2b-256 61e41523262a19f914ce1dc30c5a4fcc8c9bb55294e0a811559d529c06a867c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page