-
Notifications
You must be signed in to change notification settings - Fork 0
Home
LabThings is an open-source implementation of the W3C Web Things architecture, for connecting and programming lab instrumentation.
Lab instruments (or Things) can be automatically discovered over any standard IP network, and describe their functionality using a Thing Description. HTTP and WebSocket APIs are served by the instrument, allowing other devices on the same network to interact with, respond to, or automate the instrument.
Existing lab instruments can be adapted for Lab Things compatibility by using low cost devices such as Raspberry Pis or Arduino as intermediate "proxy" devices.
Instrumentation control poses a unique set of programming challenges related to resource locking, asynchronous execution, experiment planning, and data management. LabThings aims to provide a framework for solving these problems in an open, interoperable way using existing standards and technologies. Good solutions to many of these problems exist outside of research laboratory development. By utilizing these widely used, open standards, labs can begin to move away from often prohibitively expensive, proprietary solutions, and modernize lab automation in a sustainable and accessible fashion.
- LabThings started as the backend for the OpenFlexure Microscope, an open-source 3D printed microscope. A broad overview of the microscopes capabilities can be watched in this 2019 PyCon UK talk.
- Built on existing Web of Things standards
- Easily build a network API out of existing instrument code
- Bind properties and actions to existing code, and automatically generate events for all interactions
- Built-in support for handling long running background tasks, including component locking for Async-safety
- Automatically generate full, interactive documentation, including JSON schemas
- Automatically generate a standard Thing Description for whole-lab interoperability
- Websocket support out-the-box, with automatic event broadcasting (not yet implemented)
- Built in Extension platform, for adding in instrumentation functionality, API views, and user interfaces
- Connect your lab using high availability, low-cost networking equipment, no proprietary connections
- Get a full, event-driven graphical overview of your lab
- Automatically react to instrument events, such as pausing experiments during high environmental temperature, or resuming after an interlock trip
- Easy experiment scripting using Python, JavaScript or graphically with Blocky Automatic data and event backup using a low cost server such as a Raspberry Pi