hololinked - Pythonic Supervisory Control & Data Acquisition / Internet of Things#
hololinked
is (supposed to be) a versatile and pythonic tool for building custom control and data acquisition
software systems. If you have a requirement to capture data from your hardware/instrumentation remotely through your
domain network, control them, show the data in a browser/dashboard, provide a Qt-GUI or run automated scripts,
hololinked
can help. Even if you wish to do data-acquisition/control locally in a single computer, one can still
separate the concerns of GUI & device or integrate with web-browser for a modern interface or use modern web development
based tools. hololinked
is being developed with the following features in mind:
being truly pythonic - all code in python & all features of python
reasonable integration with HTTP to take advantage of modern web practices
easy to understand & setup
agnostic to system size & flexibility in topology
In short - to use it in your home/hobby, in a lab or in a research facility & industry.
hololinked
is primarily object oriented & the building block is the RemoteObject
class. Your instrument
class (i.e. the python object that controls the hardware) should inherit this class. Each such class provides remote
methods, remote attributes (also called remote parameters) & events which become accessible on the network through HTTP
and/or TCP after implementation by the hololinked
developer. Interprocess communication (ZMQ’s IPC) is
available for restriction to single-computer applications. Remote methods can be used to run control and measurement
operations on your instruments or arbitrary python logic. Remote parameters are type-checked object attributes with
getter-setter options (identical to python property
with added network access). Events allow to asynchronously push
arbitrary data to clients. Once such a RemoteObject
is instantiated, it can be connected with a server of choice (one or many).
Please follow the documentation for examples & tutorials, how-to’s and API reference.
Warning
This project is under development and is an idealogical state. Please use it only for playtesting or exploring.
Note
web developers & software engineers, consider reading the note section
last build : 26.04.2024 20:42 UTC