Programmaticly adjust axis M1011 settings

My team just worked out how to programmaticly adjust settings such as exposure on the axis M1011 camera, and I thought I would share what we found with the community.

First, if you are trying to change camera settings, you should look at the wpi library first, as it has many options already available with an easy API. However, if you are using the M1011, you may notice that some options that are available on the web UI (such as exposure) are not exposed through the wpi library, and do not have a documented API in the camera manual.

We found that these settings could be changed directly using httprequest of the form:

http://10.te.am.11/sm/sm.srv?<parameter>=<value>&action=modify

The likely incomplete list of parameters that we found (along with default values) is:

root_ImageSource_I0_Sensor_ColorLevel=50
root_ImageSource_I0_Sensor_Brightness=50
root_ImageSource_I0_Sensor_Sharpness=50
root_ImageSource_I0_Sensor_Contrast=50
root_ImageSource_I0_Sensor_WhiteBalance=auto
root_ImageSource_I0_Sensor_ExposureValue=50
root_ImageSource_I0_Sensor_Exposure=flickerfree50
root_ImageSource_I0_Sensor_BacklightCompensation=no
root_ImageSource_I0_Sensor_ExposureWindow=center
zoneType=other
root_ImageSource_I0_Sensor_ExposurePriority=0
root_ImageSource_I0_Sensor_MinExposureTime=10000
root_ImageSource_I0_Sensor_MaxExposureTime=10000
root_ImageSource_I0_Sensor_MinGain=0
root_ImageSource_I0_Sensor_MaxGain=0

You will need to authenticate yourself before the camera will accept a command. If your http library does not support authentication, you can likely change the URI to

http://FRC:[email protected]/sm/sm.srv?<parameter>=<value>&action=modify

Are there any other actions that you know of? It would be nice to be able to read the known keys and save them when the user modifies them.