Skip to content

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

hololinked is a beginner-friendly pythonic tool suited for instrumentation control and data acquisition over network (IoT & SCADA).

As a novice, you have a requirement to control and capture data from your hardware, say in your electronics or science lab, and you want to show the data in a dashboard, provide a PyQt GUI, run automated scripts, scan routines or jupyter notebooks, hololinked can help. Even for isolated desktop applications or a small setup without networking, one can still separate the concerns of the tools that interact with the hardware & the hardware itself.

If you are a web developer or an industry professional looking for a web standards compatible (high-speed) IoT runtime, hololinked can be a decent choice. By conforming to W3C Web of Things, one can expect a consistent API and flexible bidirectional message flow to interact with your devices, irrespective of the underlying protocol. Currently HTTP & ZMQ are supported. See Use Cases Table.

This implementation is based on RPC.


High Level Overview

Each device, or Thing, is modeled in software with:

  • Properties: Validated, get-set attributes for settings, captured/computed data, or network-accessible values.

    • Oscilloscope - time resolution, time range, channel data
    • Camera - frame rate, exposure time, captured image
    • DC Power Supply - current voltage, voltage range, max allowed current
  • Actions: Methods that command the hardware to perform operations.

    • Oscilloscope - connect/disconnect hardware
    • Camera - start/stop measurement or video capture
    • DC Power Supply - execute control routines (e.g., closed-loop control)
  • Events: Asynchronous messages or data streams to clients (e.g., alarms, measured values)

    • Camera - streams images as events
    • DC Power Supply - raises alarms on over-current or over-voltage

This separation is independent of:

  • the network protocol used for communication (HTTP, MQTT, ZMQ etc.)
  • data serialization or binary representation (JSON, MessagePack, Pickle etc.)
  • security or access control mechanisms (JWT, Basic Auth, OAuth etc.)

The Thing object represents the physical device and is modeled as a class, encapsulating its properties, actions, and events as its attributes & methods. Additionally, state machines can constrain property and action execution:

  • Oscilloscope - Cannot start a new measurement while one is ongoing
  • Camera - Cannot change exposure time while capturing video

Ready to get started?
See the Beginner's Guide section for concepts and code example and the Examples section for hardware-specific implementations.