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.