Lightweight SCADA device servers and integrations in Kotlin-Multiplatform
Go to file
2022-01-18 18:25:40 +03:00
.github/workflows CI setup and Readme changes 2020-06-07 21:16:19 +03:00
.space Fix ktor imports 2022-01-18 17:37:25 +03:00
controls-core Fix ktor imports 2022-01-18 17:37:25 +03:00
controls-magix-client Make it work 2021-11-26 16:25:09 +03:00
controls-mongo Refactor storage 2022-01-18 18:25:40 +03:00
controls-opcua Remove stand-alone properties and use specs instead 2021-10-23 19:44:13 +03:00
controls-serial Fix package names and imports 2021-06-20 17:05:07 +03:00
controls-server Fix property names and types for DeviceSpec 2021-09-29 10:43:19 +03:00
controls-storage Refactor storage 2022-01-18 18:25:40 +03:00
controls-tcp package refactor 2021-06-21 14:09:59 +03:00
controls-xodus Refactor storage 2022-01-18 18:25:40 +03:00
demo Refactor storage 2022-01-18 18:25:40 +03:00
docs package rename 2021-04-11 15:12:09 +03:00
gradle/wrapper Make this work 2022-01-09 12:48:26 +03:00
magix add duplicating local filter for RSocketMagixEndpoint 2021-11-13 13:25:06 +03:00
motors Merge remote-tracking branch 'space/dev' into dev 2021-12-24 20:52:40 +03:00
xodus-serialization Fix issues 2022-01-17 12:19:35 +03:00
.gitignore Add rsocket service 2020-11-03 18:54:52 +03:00
build.gradle.kts Make this work 2022-01-09 12:48:26 +03:00
gradle.properties Fix ktor imports 2022-01-18 17:37:25 +03:00
gradlew Migrate to K-1.4.0 2020-08-31 12:40:49 +03:00
gradlew.bat Migrate to K-1.4.0 2020-08-31 12:40:49 +03:00
LICENSE Initial commit 2020-02-16 15:34:06 +03:00
README.md Merge remote-tracking branch 'origin/master' into dev 2021-10-23 11:02:31 +03:00
settings.gradle.kts Fix ktor imports 2022-01-18 17:37:25 +03:00

JetBrains Research

Controls.kt

Controls.kt (former DataForge-control) is a data acquisition framework (work in progress). It is based on DataForge, a software framework for automated data processing. This repository contains a prototype of API and simple implementation of a slow control system, including a demo.

Controls.kt uses some concepts and modules of DataForge, such as Meta (immutable tree-like structure) and Meta (which includes a scalar value, or a tree of values, easily convertable to/from JSON if needed).

To learn more about DataForge, please consult the following URLs:

DataForge-control is a Kotlin-multiplatform application. Asynchronous operations are implemented with kotlinx.coroutines library.

Materials and publications

Features

Among other things, you can:

  • Describe devices and their properties.
  • Collect data from devices and execute arbitrary actions supported by a device.
  • Property values can be cached in the system and requested from devices as needed, asynchronously.
  • Connect devices to event bus via bidirectional message flows.

dataforge-control-core module packages

  • api - defines API for device management. The main class here is Device. Generally, a Device has Properties that can be read and written. Also, some Actions can optionally be applied on a device (may or may not affect properties).

  • base - contains baseline Device implementation DeviceBase and property implementation, including property asynchronous flows.

  • controllers - implements Message Controller that can be attached to the event bus, Message and Property flows.

demo module

The demo includes a simple mock device with a few properties changing as sin and cos of the current time. The device is configurable via a simple TornadoFX-based control panel. You can run a demo by executing application/run Gradle task.

The graphs are displayed using plotly.kt library.

Example view of a demo: