Package: julabo
Julabo libraryThis library is used to control basic features of Julabo equipment. It is
composed of a core library, an optional simulator and an optionaltangodevice 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.InstallationFrom within your favorite python environment type:$ pip install julaboLibraryThe 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:fromjulaboimportJulaboCF,connection_for_urlasyncdefmain():conn=connection_for_url("tcp://controls.lab.org:17890")dev=JulaboCF(conn)awaitconn.open()ident=awaitdev.identification()status=awaitdev.status()print(f"{ident}status is:{status}")# read temperature:temp=awaitdev.bath_temperature()print(f"Bath temperature:{temp}degC")# start the devicestarted=awaitdev.is_started()ifnotstarted:awaitcryo.start()# define a new set pointawaitdev.set_point_1(34.56)asyncio.run(main())Serial lineTo access a serial line based Julabo device it is strongly recommended you spawn
a serial to tcp bridge usingser2net,ser2sockorsocatAssuming your device is connected to/dev/ttyS0and 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=1It might be worth considering starting socat, ser2net or ser2sock as a service usingsupervisororcircus.SimulatorA Julabo simulator is provided.Before using it, make sure everything is installed with:$ pip install julabo[simulator]Thesinstrumentsengine 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.ymldevices:-class:JulaboCFpackage:julabo.simulatortransports:-type:serialurl:/tmp/julabo-cf31baudrate:9600To 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 typesinstruments-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>>>fromjulaboimportJulaboCF,connection_for_url>>>conn=connection_for_url("serial:///tmp/julabo-cf31",concurrency="syncio")>>>dev=JulaboCF(conn)>>>conn.open()>>>print(dev.identification())JULABOCRYOCOMPACTCF31VERSION5.0Tango serverAtangodevice 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 usestangoctl. You would need
to install it withpip install tangoctlbefore using it. You are free to use any other
tango tool likefandangoor Jive)Launch the server with:$ Julabo testTODOAddon_connection_madecallback to initialize controller with:support for async local serial line connectioncache identification()