Supported today Liquid Handling

Tecan Fluent Integration

Drive your liquid handler in Python, without an operator at the FluentControl screen

List and run FluentControl methods, set their variables, stream XML commands into a running method, and answer its dialogs, all from code.

Supports
Fluent 480, 780
Connects over
VisionX COM API
Local interface
SiLA 2
Vendor software
FluentControl
Runs On
Windows

What You Can Command on the Fluent

Process control, method runs, variables, the XML execution channel, live state and dialogs each arrive as their own callable capability. FluentControl does the pipetting, and your code decides what runs and when.

FluentControl Process

Start or attach to FluentControl, in simulation or system integration mode, log a user in, and shut it down again.

Method Runs

List runnable and maintenance methods, then prepare, run, pause, resume, stop and close them, or run one with parameters in a single call.

Method Variables

Read and set variables on the prepared method, including QueryAtStartup variables, and evaluate expressions against them.

Execution Channel

Stream XML commands into a running method, one acknowledged command at a time, then finish or abort the channel.

Live State

Subscribe to FluentControl's state, run progress, initialization progress, errors and log notifications.

Dialogs and Instrument

Answer or auto-close FluentControl dialogs during a run, initialize the instrument, and switch the interior light.

Run a Method From Python

Ordinary async Python. Version it, test it, generate it at runtime like any other code.

# list methods, run one, stream a command into it, close the session
import asyncio
from pathlib import Path
from unitelabs.sdk import AsyncApiClient

client = AsyncApiClient()
fluent = await client.get_service_by_name("Tecan FluentControl")

print(await fluent.runtime_controller.get_runnable_methods())

await fluent.runtime_controller.prepare_method(method="plate_prep")
await fluent.runtime_controller.run_method()
await asyncio.sleep(3) # give FluentControl time to open the XML channel

prompt = Path("verify_deck.xml").read_text() # a ScriptGroup command
await fluent.execution_channel_controller.execute_command(command=prompt)

await fluent.execution_channel_controller.finish_command() # back to EditMode
await fluent.runtime_controller.close_method()
How connectors work

Know One Connector, and You Know Them All

Every instrument is found and called the same way, and the same Python drives whatever comes next.

One API, Every Instrument

Find it by name, then call its actions. It's the same on a liquid handler, a reader or an incubator, whatever the vendor ships underneath.

Ask a Connector What It Can Do

Modules and actions are discoverable at runtime, and parameters carry their own types, units and constraints. You don't need a PDF to find out.

One Outbound Connection

One outbound TLS connection on port 443 to your tenant, so nothing needs opening inbound. Ports, hostnames, and setup are in the docs.

Also Works With

The same Python script can drive every instrument on the bench. A liquid handler sets up the plate, a thermal cycler can cycle it, and a reader measures it, all from one script.

FAQ

Tecan Fluent

The questions automation engineers ask before integrating a Fluent.

Yes, through FluentControl. With the UniteLabs connector you list and run FluentControl methods from Python, set their variables, and stream commands into a method while it runs. It's ordinary async Python, so it can be version-controlled, tested and generated at runtime like any other code.

Yes. The connector drives FluentControl through its VisionX COM API, so it runs on the Windows PC where FluentControl is installed, and FluentControl does the instrument control. The connector exposes it as a SiLA 2 service on a local gRPC port, and opens one outbound TLS connection on port 443 to your tenant.

Yes. Add an XML execution channel step to the method, and your script can stream commands into it while it runs: set up the worktable, register labware and trigger liquid handling. Each command is acknowledged before the next one goes.

The Fluent 480 and Fluent 780. The connector works at the FluentControl level, so what it can run depends on the methods and worktable you've set up there.

Yes. The connector is SiLA 2 1.1 compliant and exposes FluentControl as a SiLA 2 service on a local gRPC port, with modules you can list at runtime. Find out more about how we use the SiLA 2 standard for instrument interoperability.

Your code sees it. Dialogs and errors arrive as live subscriptions and as updates on a running method, and you can answer a dialog from code or have the connector close dialogs automatically during a run.

Yes. The connector can start FluentControl in its own simulation mode, and the UniteLabs workflow template ships a FluentControl mock that stands in for the live service while you build the structure of a workflow.

Tell us what you want to automate

Put Your Fluent to Work