Gamma ion pump QPC ethernet Python library & CLI utility

Overview

Unofficial Gamma ion pump ethernet control CLI utility and library

This is a mini Python 3 library and utility that exposes some of the functions of the Gamma Vacuum QPC ion pump controller via a CLI or via a library class via it's Ethernet port.

Note: This utility is in no way associated with Gamma Vacuum and is not an official product. It's just a simple tool that emerged out of my requirements to interact with their pump controllers. There is no guarantee that this utility will work under any circumstances, won't damage your controller or will work after firmware upgrades, etc.

Installation

This package can be installed by pip. Depending on the environment and operating system:

python -m pip install gammaionctl-tspspi

or simply

pip install gammaionctl-tspspi

In case one does not want to use pip one can also simply copy src/gammaionctl/gammaionctl.py and import from this file. There are no additional dependencies for the library.

Uninstalling

Uninstalling the package is also directly possible using pip if it has been installed that way:

python -m pip uninstall gammaionctl-tspspi

or

pip uninstall gammaionctl-tspspi

Library API

The library exposes a single GammaIonPump class inside the gammactl package.

Creating an instance / connecting

To connect to an ion pump controller one simply instantiates the GammaIonPump class passing the remote host address - one can either do this explicit and call close after one's done:

pump = GammaIonPump("10.0.0.11")
# ...
pump.close()

Or one can use the with construct which is highly encouraged:

with GammaIonPump("10.0.0.11") as pump:
    # Do whatever you want

There is a setVerbose method that one can use to dump debug information on stdout. This is primarily thought for debugging purposes during development though. To enable verbose mode one can simply execute

pump.setVerbose(True)

Error handling

All methods either:

  • Return a value
  • Return None in case there is no measurement value such as pressure for a disabled pump - in this case the connection stays active
  • False in case of I/O or network errors as well as protocol violations. In this case the connection is dropped and no further commands are possible until one reconnects by reinstantiation of the connection object.

Identifying the controller

The identify method returns the identification string of the controller or False in case of failure.

Example:

id = pump.identify()
print(id) # Prints "DIGITEL QPC" for our controller

Getting estimated vacuum pressure

The pumps are able to estimate the current pressure inside the pump volume based on their pumping current. The pump index has to be 1-4 for the quad pump controller.

The method returns either:

  • the pressure in millibar as float
  • None in case there is no measurement value (for example because the pump is currently disabled)
  • False in case of a protocol violation. Then the connection has been dropped.
# Querying pressure for pump 1
pressure = pump.getPressure(1)

Getting pump voltage

For every pump one can query the pump voltage of the ion pump using getVoltage. Again the pump index has to be 1-4 for the quad pump controller.

The method returns either:

  • the voltage in Volts as float.
  • None in case there is no measurement value. Note that for a disabled pump there is a standby current in the range of a few tens of volts that seems to be used to detect if there is an pump attached.
  • False in case of a protocol violation. Then the connection has been dropped.
# Querying voltage for pump 1
volts = pump.getVoltage(1)

Getting pump current

For every pump one can query the pump current of the ion pump using getCurrent. Again the pump index has to be 1-4 for the quad pump controller.

The method returns either:

  • the current in Millivolts as float.
  • None in case there is no measurement value (for example for a disabled pump)
  • False in case of a protocol violation. Then the connection has been dropped.
# Querying current for pump 1
amps = pump.getCurrent(1)

Querying the pump size

Using getPumpSize one can query the pump capacity of the pump in liters per second (L/S) for a pump index in the range from 1-4 for the quad pump controller.

The method returns either:

  • the pump capacity in liters per second as int.
  • None in case there is no configured size (in case no pump is connected for example)
  • False in case of a protocol violation. Then the connection has been dropped.
# Querying pump capacity for pump 1
capacity = pump.getPumpSize(1)

Querying the current supply status

In addition (for human interfacing) one can query the supply status - the string shown on the controllers display - for every pump. This is done using getSupplyStatus again for a pump index in the range from 1-4 for the quad pump controller.

The method returns either:

  • the pump status as string.
  • False in case of a protocol violation. Then the connection has been dropped.
# Querying pump status for pump 1
status = pump.getSupplyStatus(1)

Starting and stopping a pump

To enable a pump that's currently disabled on can use the enable method, to stop a running pump the disable method. These methods of course also require the pump index. They either return True in case the operation succeeded (note this is idempotent so disabling a disabled pump is successful) or False in case of a protocol violation or connection error in which case the connection has been dropped.

# Enabling pump 1
pump.enable(1)
# Disabling pump 1
pump.disable(1)
You might also like...
AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool
A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool

Privateer A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool How

[WIP]An ani-cli like cli tool for movies and webseries

mov-cli A cli to browse and watch movies. Installation This project is a work in progress. However, you can try it out python git clone https://github

Library and command-line utility for rendering projects templates.
Library and command-line utility for rendering projects templates.

A library for rendering project templates. Works with local paths and git URLs. Your project can include any file and Copier can dynamically replace v

Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.
Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.

Baselining, on steroids! Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems. The proje

cli simple python script to interact with iphone afc api based on python library( tidevice )
cli simple python script to interact with iphone afc api based on python library( tidevice )

afcclient cli simple python script to interact with iphone afc api based on python library( tidevice ) installation pip3 install -U tidevice cp afccli

Python package with library and CLI tool for analyzing SeaFlow data

Seaflowpy A Python package for SeaFlow flow cytometer data. Table of Contents Install Read EVT/OPP/VCT Files Command-line Interface Configuration Inte

Comments
  • Added tests, checking high voltage status, reading other pressure units, etc

    Added tests, checking high voltage status, reading other pressure units, etc

    Hi, I've added a few things to your code,

    • Tests
    • getHighVoltageStatus()
    • Timeout setting
    • Reading pressure units (rather than throwing an exception when they aren't mBar)
    • Raising ConnectionError with a message rather than just generic runtime error

    I also ran it through pylint (hence the changes from repl == False to repl is False).

    I did sort of make a lot of changes though (some of which are just stylistic), so I'd understand if you don't want to merge this. Just figured I'd offer!

    opened by xkstein 3
  • serial port implementation?

    serial port implementation?

    Hi, thanks for sharing this code.

    Do you think it is possible to use this codebase for the serial port as well? Our controller does not have an ethernet port. I was thinking maybe a drop-in for the socket is sufficient. If you give me some pointers I can fork and implement it myself.

    Cheers!

    enhancement 
    opened by aktentasche 1
Releases(v0.0.1)
Owner
Existing since 1985, Programming since 1992; Physicist; Love C, Java, CoQ, Erlang; Programming also Python, C++,JavaScript; Always want to understand everything
pyGinit is a command line tools that help you to initialize your current project a local git repo and remote repo

pyGinit pyGinit is a command line tools that help you to initialize your current project a local git repo and remote repo Requirements Requirements be

AlphaBeta 15 Feb 26, 2022
Gitfetch is a simple tool to get github user details

Gitfetch Just a (cli?) tool to get github user details 🙂 Installation 📂 Install Gitfetch via pypi pip install gitfetch or pip install git+https://g

I'm Not A Bot #Left_TG 7 Jan 23, 2022
A command line interface to buy things in stregsystemet

Stregsystemet-CLI This repository is the Stregsystemet CLI, to buy things in Stregsystemet, at AAU. Use of this cli-tool is at your own risk and there

F-klubben 14 Oct 18, 2022
img-proof (IPA) provides a command line utility to test images in the Public Cloud

overview img-proof (IPA) provides a command line utility to test images in the Public Cloud (AWS, Azure, GCE, etc.). With img-proof you can now test c

13 Jan 07, 2022
This is a simple Termo application in command line style

my-termo This is a simple Termo application in command line style. This app run a Linux crontab task every day to get a new word. Type termo in your t

Gustavo Soares 1 Feb 14, 2022
instant coding answers via the command line

howdoi instant coding answers via the command line Sherlock, your neighborhood command-line sloth sleuth. Are you a hack programmer? Do you find yours

Benjamin Gleitzman 9.8k Jan 08, 2023
A simple cli tool to commit Conventional Commits

convmoji A simple cli tool to commit Conventional Commits. Requirements Install pip install convmoji convmoji --help Examples A conventianal commit co

3 Jul 04, 2022
A python Ethereum utilities command-line tool.

peth-cli A python Ethereum utilities command-line tool. After wasting the all day trying to install seth and failed, I took another day to write this.

Moon 55 Nov 15, 2022
Low-Cost Open Source Ventilator or PAPR

Last updated 2020/04/19 Low-Cost Open-Source Ventilator-ish Device or PAPR NOTE: This is currently an independent project not affiliated with any comm

Johnny Lee 1.7k Dec 21, 2022
A clone of the popular online game Wordle

wordle_clone A CLI application for wordle. Description A clone of the popular online game Wordle.

0 Jan 29, 2022
A project designed to make taking notes easier than ever - by doing it all on command line

A project designed to make taking notes easier than ever - by doing it all on command line! Yes, all of your files are easily accessible through one command interface, and can be written to at any ti

1 Dec 10, 2021
CLI Web-CAT interface for people who use VIM.

CLI Web-CAT CLI Web-CAT interface. Installation git clone https://github.com/phuang1024/cliwebcat cd cliwebcat python setup.py bdist_wheel sdist cd di

Patrick 4 Apr 11, 2022
Command-line search tool for GitHub

cligh is a command-line search tool for GitHub.

1 Oct 02, 2022
A simple python implementation of a reverse shell

llehs A python implementation of a reverse shell. Note for contributors The project is open for contributions and is hacktoberfest registered! llehs u

Archisman Ghosh 2 Jul 05, 2022
Free and Open-Source Command Line tool for Text Replacement

Sniplet Free and Open Source Text Replacement Tool Description: Sniplet is a work in progress CLI tool which can do text replacement globally in Linux

Veeraraghavan Narasimhan 13 Nov 28, 2022
Ralph is a command-line tool to fetch, extract, convert and push your tracking logs from various storage backends to your LRS or any other compatible storage or database backend.

Ralph is a command-line tool to fetch, extract, convert and push your tracking logs (aka learning events) from various storage backends to your

France Université Numérique 18 Jan 05, 2023
Access hacksec.in from your command-line

Access hacksec.in from your command-line

hacksec.in 3 Oct 26, 2022
Wordle helper: help you print posible 5-character words based on you input

Wordle Helper This program help you print posible 5-character words based on you

Gwan Thanakrit Juthamongkhon 4 Jan 19, 2022
Simple Digital Ocean CLI by python.

Simple Digital Ocean CLI by python.

Chiro 2 Jan 01, 2023
Code for "Salient Deconvolutional Networks, Aravindh Mahendran, Andrea Vedaldi, ECCV 2016"

deconvnet_analysis Code for "Salient Deconvolutional Networks, Aravindh Mahendran, Andrea Vedaldi, ECCV 2016" Parts of this code Generate figures in t

Aravindh Mahendran 12 Jan 25, 2021