bLIS uses MQTT to establish fast and reliable 2-way communication between laboratory instruments and the remote bLIS server. This is implemented via a python script which is installed and executed on a physical device in the lab and connected to the instrument(s).

LIS Instrument Communication - Page 1.svg

Script configuration

You can configure the script using either command line arguments or environment variables. The table below shows all available configuration options.

Flag Description Required Default value
serial-port The serial port the instrument is connected to ✔︎
mqtt-broker IPv6 address of the broker.
**This requires a wireguard connection ✔︎
mqtt-username Username for the broker ✔︎
mqtt-password Password for the broker ✔︎
pod-id Deprecated - will remove ✔︎
integration-id Listed below for each instrument ✔︎
serial-baudrate Baud rate the serial port will use 9600
serial-bytesize Byte size the serial port will use 8
buffer-threshold Max buffer size before message is sent 512
timeout Max time (in seconds) before message is sent 1
reconnect-delay Delay (in seconds) before reconnecting on a failure 5
ping-interval Time (in seconds) in between pings 60
verbose Enable verbose logging. Helpful for troubleshooting. false

Instrument configuration

Different instruments require specific configuration values. Below is a list of known instruments and their required settings

Instrument integration-id serial-baudrate serial-bytesize
Siemens EXL exl 9600 7
DiaSorin LIAISON XL liaison 9600 8
Siemens CLINITEK clinitek 9600 8
Siemens SYSMEX sysmex 9600 8

Testing configuration

To test server communication, set the integration-id argument to echo. This will send test data to the server, which will display the output to verify the connection is working.

A server administrator must validate the output.

Example command line execution

python /etc/config/scripts/blis-mqtt.py \\
	--serial-port /dev/serial/port1 \\ # update with appropriate port for instrument
	--mqtt-broker "<ipv6 address>" \\  # provided during setup
	--mqtt-username "<username>" \\    # provided during setup
	--mqtt-password "<password>" \\    # provided during setup
	--integration-id "exl" \\          # use "echo" for testing purposes
	--serial-baudrate 9600 \\          # see above table for instrument settings
	--serial-bytesize 8               # see above table for instrument settings

Security and networking

Communication with the LIS server occurs through a secure Wireguard VPN tunnel. Since the MQTT broker is not exposed to the public internet, you'll receive a private IPv6 address.

You'll also receive a username and password for broker authentication.

Wireguard capability is required if you're using your own hardware.

For more information, see the private networking documentation for the cloud provider.