(603) 654-1280 info@nextmovetech.com

Scripting Interface

In addition to a user-friendly web interface, Nextmove positioners offer a powerful Python scripting interface that can automate any task accessible through the web interface, and even some that aren’t. With this interface, you can commission new systems, configure multiple systems consistently, and store data from scans remotely without having to navigate through menus and click buttons on each system’s web interface.

You can also develop and run custom scans by defining a series of points and making decisions at each step. The Python interface enables you to coordinate multiple Nextmove systems at once, making it ideal for larger system development projects. Best of all, the Python interface is compatible with any version of Python 3.6 or greater, so you can get started with Nextmove regardless of your preferred Python setup.

Python not your preferred language? No problem, this library also acts as a template and documentation for the web interface API which you can quickly and easily translate into any language which can perform GET and POST HTTP commands.

If you need any assistance getting anything up and running, you can get support or assistance at


Getting Started

To get started, we recommend setting up a Python virtual environment, then executing the main.py function included in the library. This will install all the necessary Python libraries into the virtualenv, as well as running the example program. From your shell, enter the following sequence of commands:

if you don’t have python virtual environments enabled, first start by running the following pip command

pip install virtualenv

Then create a virtual environment called nextmove_script

virtualenv --python=python3 nextmove_script

Enter the virtual environment using:

source nextmove_script/bin/activate

Run the program with:

python3 main.py

When finished, running your program, you can destroy the virtual environment using:


Basic Usage

The usage of this library to build you own application is very simple, you only need to import the posObj class from the positioner library, then create a positioner object like this

from library.positioner import posObj

ip_address = ""
username = "admin"
password = "nextmove"

pos = posObj(ip_address, username, password)

That is it! If you were to run the above program, and there is a Nextmove system at the IP address, it would produce the following output:

This both indicates that you have successfully connected to the system, but also indicates the Nextmove model system, the software version, serial number, main board type, and the revision of the main board that is currently installed in this particular system.

To perform additional tasks using this newly created positioner object pos, you just need to call additional methods.For example, if you wanted to move the pedestal azimuth and elevation angles to 25 degrees and 5 degrees respectively wait 5 seconds, then return the angles to 0,0 the following program would perform that task.


from library.positioner import posObj
from library.support_library import AXES

from time import sleep

ip_address = ""
username = "admin"
password = "nextmove"

pos = posObj(ip_address, username, password)
pos.set_ped_target(Az=25.0, El=5.0)

pos.wait_to_reach_target(AXES.AZ, min_error=0.1)
pos.wait_to_reach_target(AXES.EL, min_error=0.1)


pos.set_ped_target(Az=0.0, El=0.0)

This also demonstrates the blocking wait command, which waits until the systems pedestal position reports that it is within 0.1 degrees of the intended target before moving on.