Skip to content

hololinked - Pythonic Object-Oriented Supervisory Control & Data Acquisition / Internet of Things

hololinked is a beginner-friendly server side pythonic tool suited for instrumentation control and data acquisition over network, especially with HTTP. If you have a requirement to remote control and capture data from your hardware, visualize the data in a web browser or a desktop GUI, run automated scripts and scan routines, hololinked can help. Even for isolated applications or a small lab setup without networking concepts, one can still separate the concerns of the tools that interact with the hardware & the hardware itself.

Documentation Status PyPI Anaconda codecov
PyPI - Downloads Conda Downloads

hololinked is compatible with the W3C Web of Things (WoT) recommended pattern for developing hardware/instrumentation control software. Each device or Thing can be controlled systematically when their design in software is segregated into properties, actions and events. In object oriented terms, where the hardware is generally represented by a class:

  • properties are validated get-set attributes of the class which may be used to model settings, hold captured/computed data or generic network accessible quantities. For example,
    • an oscilloscope can have properties like time resolution, time range, data for each channel
    • a camera can have properties like frame rate, exposure time, captured image
    • a DC power supply can have properties like the current voltage, voltage range, maximum allowed current
  • actions are methods that command the hardware to perform some operation:
    • connect/disconnect hardware from computer or raspberry pi
    • DC power supply should execute a closed loop control routine
    • oscilloscope should start/stop measurement or the camera should start/stop video capture
  • events can asynchronously communicate/push arbitrary data to a client, like alarm messages, streaming measured quantities etc.
    • camera may stream the images as events
    • DC power supply may raise an alarm when the current value exceeds the allowed value

This division of interactions with the hardware is irrespective of:

  • the protocol that exchange the messages on the network
  • the serialization of the data format/how the data is represented in the binary format in those messages
  • any security considerations regarding how the hardware may be accessed.

Additionally, a state machine may constrain property and action execution:

  • camera may not change the exposure time while capturing video
  • oscilloscope should not start a fresh measurement when a measurement is already ongoing

Please read how-to section to proceed further with coding patterns and examples section for hardware-specific implementations.