Skip to main content

julabo library

Project description

Julabo library

Julabo CF31

This library is used to control basic features of Julabo equipment. It is composed of a core library, an optional simulator and an optional tango device server.

It has been tested with CF31, HL-4, MS-1000f and FC models, but should work with other models too.

It can be used with either with a direct serial line (read below on the recommended way to setup a serial line connection) or remotely through TCP socket (either raw socket or rfc2217). In the latter case the master device to which the Julabo serial line is connected must provide a raw socket or rfc2217 interface.

Installation

From within your favorite python environment type:

$ pip install julabo

Library

The core of the julabo library consists of JulaboCF, JulaboHL, JulaboMS and JulaboFC objects. To create a Julabo object you need to pass a communication object. Here is how to connect to a julabo CF31 through a raw tcp socket:

from julabo import JulaboCF, connection_for_url


async def main():
    conn = connection_for_url("tcp://controls.lab.org:17890")
    dev = JulaboCF(conn)
    await conn.open()

    ident = await dev.identification()
    status = await dev.status()
    print(f"{ident} status is: {status}")

    # read temperature:
    temp = await dev.bath_temperature()
    print(f"Bath temperature: {temp} degC")

    # start the device
    started = await dev.is_started()
    if not started:
       await cryo.start()

    # define a new set point
    await dev.set_point_1(34.56)

asyncio.run(main())

Serial line

To access a serial line based Julabo device it is strongly recommended you spawn a serial to tcp bridge using ser2net, ser2sock or socat

Assuming your device is connected to /dev/ttyS0 and the baudrate is set to 9600, here is how you could use socat to expose your device on the machine port 5000:

socat -v TCP-LISTEN:5000,reuseaddr,fork file:/dev/ttyS0,rawer,b9600,cs8,eol=10,icanon=1

It might be worth considering starting socat, ser2net or ser2sock as a service using supervisor or circus.

Simulator

A Julabo simulator is provided.

Before using it, make sure everything is installed with:

$ pip install julabo[simulator]

The sinstruments engine is used.

To start a simulator you need to write a YAML config file where you define how many devices you want to simulate and which properties they hold.

The following example exports 1 hardware device with a minimal configuration using default values:

# config.yml

devices:
- class: JulaboCF
  package: julabo.simulator
  transports:
  - type: serial
    url: /tmp/julabo-cf31
    baudrate: 9600

To start the simulator type:

$ sinstruments-server -c ./config.yml --log-level=DEBUG
2020-09-01 21:04:43,172 INFO  simulator: Bootstraping server
2020-09-01 21:04:43,173 INFO  simulator: no backdoor declared
2020-09-01 21:04:43,173 INFO  simulator: Creating device JulaboCF ('JulaboCF')
2020-09-01 21:04:43,186 INFO  simulator: Created symbolic link "/tmp/julabo-cf31" to simulator pseudo terminal '/dev/pts/4'
2020-09-01 21:04:43,186 INFO  simulator.JulaboCF[/tmp/julabo-cf31]: listening on /tmp/julabo-cf31 (baud=9600)

(To see the full list of options type sinstruments-server --help)

You can access it as you would a real hardware. Here is an example using python serial library on the same machine as the simulator:

$ python
>>> from julabo import JulaboCF, connection_for_url
>>> conn = connection_for_url("serial:///tmp/julabo-cf31", concurrency="syncio")
>>> dev = JulaboCF(conn)
>>> conn.open()
>>> print(dev.identification())
JULABO CRYOCOMPACT CF31 VERSION 5.0

Tango server

A tango device server is also provided.

Make sure everything is installed with:

$ pip install julabo[tango]

Register a julabo tango server in the tango database:

$ tangoctl server add -s Julabo/test -d JulaboCF test/julabo/1
$ tangoctl device property write -d test/julabo/1 -p url -v "tcp://controls.lab.org:17890"

(the above example uses tangoctl. You would need to install it with pip install tangoctl before using it. You are free to use any other tango tool like fandango or Jive)

Launch the server with:

$ Julabo test

TODO

  • Add on_connection_made callback to initialize controller with:
    • support for async local serial line connection
    • cache identification()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

julabo-2.3.0.tar.gz (12.3 kB view details)

Uploaded Source

File details

Details for the file julabo-2.3.0.tar.gz.

File metadata

  • Download URL: julabo-2.3.0.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

File hashes

Hashes for julabo-2.3.0.tar.gz
Algorithm Hash digest
SHA256 9265fa6c9294ed4f66f31889a2905bdc0584ffac58905258053608dd3bc7f0d9
MD5 616e34b694aa10c469773fadc3f8310c
BLAKE2b-256 e0b3a4d207d07d9336afabe24a8afc5fb93e09a186158d78a55a443cc724d2f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page