The open platform for connected laboratory instruments
For Lab Developers
-
IP for the Lab
HTTP and WebSocket APIs enable lab control with ubiquitous protocols. With billions of users, the technology is trusted.
Device discovery leverages mDNS, the same standard protocol used by millions of connected devices.
$ mdns-scan + spectrometer._labthings._tcp.local + thermistor._labthings._tcp.local + ti-sapp-laser._labthings._tcp.local + xy-stage._labthings._tcp.local
-
Standardised spec, common descriptions
Why reinvent the wheel? The W3C have standardised designing and describing Web of Things devices.
LabThings implements these standards to provide a robust, interoperable communication framework.
{ "@context": "https://www.w3.org/2019/wot/td/v1", "@type": ["org.labthings.spectrometer"], "title": "LabThings Example Spectrometer", ...
-
Adapt your existing Python code
With a couple of lines, convert your existing instrument control libraries into a fully documented, standardised, and discoverable API.
# Build properties from any object attribute labthing.build_property( my_spectrometer, # Object "current_spectrum", # Attribute name "/spectrum", # URL description="Current spectrum snapshot", ) # Build actions from any function labthing.build_action( my_spectrometer.freeze, # Function "/freeze", # URL description="Freeze the spectrometer" )
-
Self-documenting APIs
By parsing your device control code, W3C Thing Descriptions and interactive API documentation are created with zero additional work.
{ "title": "currentSpectrum", "description": "Current spectrum snapshot", "readOnly": true, "forms": [{ "op": [ "readproperty" ], "href": "/api/spectrum", "contentType": "application/json" }], "type": "array", "items": { "type": "integer", "format": "int32" } }
-
Built-in extension management
Built in extension management allows developers to add and remove functionality from your Lab Thing.
For Lab Users
-
A complete lab overview (soon)
Manage your entire lab from a simple overview. LabThings links together devices into an intelligently managed web.
Pause and resume experiments for warnings, quickly start up your lab, get notified ot key events, and more.
-
Modern manuals
Using a device can be the best way to understand it.
LabThings automatically builds standard interactive documentation, allowing users to quickly interact with devices with zero code.
-
Common networking
Connect your lab using high availability, low-cost networking equipment. No proprietary connections.
IP networking provides a robust, globally available communication backbone, and can be extended to any scale.
-
Scripting and Discovery (soon)
Simple client libraries allow easy instrument control and experiment scripting. LabThings Descriptions allow all device functionality to be easily used from any language.
Devices announce themselves to the network, so connecting is simple and fast.
-
Visual programming (soon)
Blockly provides a visual programming environment for Python that can be used to build simple LabThings experiments with zero programming experience.
The generated code can easily be converted into Python scripts if you need extra functionality.
-
Events and data broadcasting (soon)
By broadcasting key events like warnings, errors, and changes in state, devices can be easily monitored and lined. Experiments can pause on warnings, and automatically resume.
Collected data can be announced to the network, enablind automatic local backup of all experimental data from across the lab.