A couple of days ago I was in need of making some scripts that removed duplicate parameter groups on a couple of Axis devices. For those of you who don’t know, Axis creates Digital Surveillance Cameras with IP technology, which in practice means that It’s surveillance cameras running Linux.
All Axis devices offers an open API for developers who want to develop that uses Axis devices. The most frequent API used is the Parameter API, that allows to change basic settings, create motion detection windows, events with triggers and so on. And this is the API that I had to implement a class for.
The class is written in Python and is pretty much an object oriented interface. Example
param1 = AxisParameter("Motion.M0.Left","1120") #param1.name = Motion.M0.Left, param1.value = "1120" param2 = AxisParameter("Properties.Resolution") #param2.name = Properties.Resolution, param2.value = None
Here we have two parameters that can be accessed from the class. param1 contains a parameter with an assigned value to it, this can be used to modify an already existing parameter. param2 contains a parameter name, but have no idea of the value of it, better used to receive the parameters
To use the class, you must first import the data from it.
from AxisParameterClass import * #import both the working class and the information class paramclass = AxisParameterClass("some.ip","username","password","vapixversion")
All arguments are optional and can be set later with the following functions
Axis currently have two API’s for handling vapix parameters. The only big difference is the URL, but still. The class will automatically try to determine the vapix version if not set before.
To get parameters from a device, simply create a parameter that you’re interesting, both groups and subgroups are fine to use:
paramclass.getParameters([AxisParameter('Motion'), AxisParameter('Properties'), AxisParameter('NonExistent')])
The class will return a list of all parameters that matches the search. Is a parameter not found, the Parameter will be returned with the value None. All parameters that are found have their value as a string.
Just as add. Create your list, and send to
Parameters returned have a status parameter that refers if the parameter was removed or not:
AxisParameter.status = "OK" #removed AxisParameter.status = "Error" #not removed.
Update Parameters (Implementation still needs some work)
To update, pass the list into
If all works, the parameters returned will contain the same result as what you passed in.
It can all be downloaded from github, licensed under MIT, so feel free to do whatever you like with it 🙂