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
A Python-based command prompt concept which includes windows command emulation.

PythonCMD A Python-based command prompt concept which includes windows command emulation. Current features: echo: Input your message and it will be cl

1 Feb 05, 2022
The easiest way to create beautiful CLI for your programs.

The Yandere is a program written in Python3, allowing you to create your own beautiful CLI tool.

Billy 31 Dec 20, 2022
Python3 library for multimedia functions at the command terminal

TERMINEDIA This is a Python library allowing using a text-terminal as a low-resolution graphics output, along with keyboard realtime reading, and a co

Joao S. O. Bueno 89 Dec 17, 2022
Objexplore is an interactive Python object explorer for the terminal.

Objexplore is an interactive Python object explorer for the terminal. Use it while debugging, or exploring a new library, or whatever! 9D1FAC73-B2A5-4

kylepollina 249 Dec 23, 2022
CLI client for RFC 4226's HOTP and RFC 6238's TOTP.

One Time Password (OTP, TOTP/HOTP) OTP serves as additional protection in case of password leaks. onetimepass allows you to manage OTP codes and gener

Apptension 4 Jan 05, 2022
A ZSH plugin that enables you to use OpenAI's powerful Codex AI in the command line.

A ZSH plugin that enables you to use OpenAI's powerful Codex AI in the command line.

Tom Dörr 976 Jan 03, 2023
CPOST is a CLI tool to assist with the proper sizing of Clara Deploy pipelines

CPOST (Clara Pipeline Operator Sizing Tool) Tool to measure resource usage of Clara Platform pipeline operators Cpost is a tool that will help you run

NVIDIA Corporation 5 Sep 27, 2021
A helper program to play wordle

A helper program to play wordle

1 Jan 22, 2022
A begginer reverse shell tool python.

A begginer tools for hacking. The theme of this repository is to bring some ready-made open-source tools for anyone new to the world of hacking. This

Dio brando 2 Jan 05, 2022
A super simple wallet application for the NANO cryptocurrency that runs in the terminal

Nano Terminal Wallet A super simple wallet application for the NANO cryptocurrency that runs in the terminal Written in 2021 by NinjaSnail1080 (Discor

9 Jul 22, 2022
Enlighten Progress Bar is a console progress bar library for Python.

Overview Enlighten Progress Bar is a console progress bar library for Python. The main advantage of Enlighten is it allows writing to stdout and stder

Rockhopper Technologies 265 Dec 28, 2022
Animefetch is an anime command-line system information tool written in python

Animefetch - v0.0.3 An anime command-line system information tool written in python. Description Animefetch is an anime command-line system informatio

Thadeuks 6 Jun 17, 2022
Proman is a simple tool for managing projects through cli.

proman proman is a project manager. It helps you manage your projects from a terminal. The features are listed below. Installation Step 1: Download or

Arjun Somvanshi 2 Dec 06, 2021
Wordle-cli - Command-line clone of Josh Wardle's WORDLE

Command-line clone of Josh Wardle's WORDLE, inspired by Paul Battley's Ruby vers

Klipspringer 32 Jan 03, 2023
This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal.

Star Wars CLI (swcli) This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal. Install $ pip install swcli Qu

Pery Lemke 5 Nov 05, 2021
Doing set operations on files considered as sets of lines

CLI tool that can be used to do set operations like union on files considering them as a set of lines. Notes It ignores all empty lines with whitespac

Partho 11 Sep 06, 2022
A Python module and command line utility for working with web archive data using the WACZ format specification

py-wacz The py-wacz repository contains a Python module and command line utility for working with web archive data using the WACZ format specification

Webrecorder 14 Oct 24, 2022
A command line tool that creates a super timeline from SentinelOne's Deep Visibility data

S1SuperTimeline A command line tool that creates a super timeline from SentinelOne's Deep Visibility data What does it do? The script accepts a S1QL q

Juan Ortega 2 Feb 08, 2022
CryptoCo-py is a Python CLI application that uses CoinGecko API to allow the user to query cryptocurrency information by typing simple commands.

CryptoCo-py is a Python CLI application that uses CoinGecko API to allow the user to query cryptocurrency information by typing simple com

1 Jan 10, 2022
🕰 The command line tool for scheduling Python scripts

hickory is a simple command line tool for scheduling Python scripts.

Max Humber 146 Dec 07, 2022