API for HTTP Interface for Motion
Output Modes
The HTTP Interface have two output modes :
- HTML : To use it from a web browser.
- RAW : To easily be parsed from any fronted ( php , python , perl , GTK , etc ... ).
The URL
URL consists of the following parts
http://motionhost.mydomain.tld:port/thread/command/subcommand?parameter=value
URL with no path
http://motionhost.mydomain.tld:port
makes Motion returns a webpage that gives a short status and lists the threads as links.
Example with 3 thread config files ( HTML Mode ).
<body>
Motion version 3.1.20 running 3 threads.
[[/0][All]]
[[/1][Thread 1]]
[[/2][Thread 2]]
[[/3][Thread 3]]
</body>
Motion version 3.1.20 running 3 threads.\n
0\n
1\n
2\n
3\n
And clicking thread 1 will give you the next section.
URL with only thread number
Thread 0 represents the default values. If there is only one camera and no thread files it is the one and only camera you control.
The URL
http://motionhost.mydomain.tld:port/thread
Example
http://motionhost.mydomain.tld:port/2
Returns this HTML, here shown as example with thread 1.
<body>
[[/2/config][Configuration]]<br />
[[/2/action][Action]]<br />
[[/2/detection][Detection]]<br />
[[/2/track][Tracking]]<br />
[[/2][
</body>]]
* RAW Mode
config\n
action\n
detection\n
track\n
Config Parameters
http://motionhost.mydomain.tld:port/2/config
<body>
[[/2/config/list][list]]<br />
[[/2/config/write][write]]<br />
[[/2/config/set][set]]<br />
[[/2/config/get][get]]<br />
[[/2/][
</body>]]
* RAW Mode
list\n
write\n
set\n
get\n
Config List
http://motionhost.mydomain.tld:port/2/config/list
Simply lists all parameters - maybe with their current values.
Write config
That option will write the current settings to config file.
Only for HTML mode write command will ask for confirmation.
http://motionhost.mydomain.tld:port/2/config/write
<body>
Are you sure? [[/%d/config/writeyes][Yes]]<br />
[[/%d/config][No]]
</body>
Thread %d write\n
Done\n
Write directly without confirmation
http://motionhost.mydomain.tld:port/2/config/writeyes
<body>
<b>Thread %d</b> write done !<br />
[[/%d/config][
</body>]]
Thread %d write\n
Done\n
Set config option value
Set a value for a parameter.
http://motionhost.mydomain.tld:port/2/config/set?user_text=value
returns something like this
<head></head>
<body>
* [[/2/config/set?user_text][user_text]] = value
<b>Done</b><br />
[[/2/config/list][
</body>]]
user_text = value\n
Done\n
You can also clear/disable config options.
http://motionhost.mydomain.tld:port/2/config/set?despeckle=
Parameters will do this conversion:
string will become (null)
int will become 0
boolean will become false
the value will be urlencoded .
Get config option value
Get the value of the requested parameter.
http://motionhost.mydomain.tld:port/2/config/get?query=user_text
returns something like this
<body>
Motion thread 2<br />
* user_text = "value"
[[/2/config/list][
</body>]]
Motion thread 2\n
user_text = value\n
Done\n
Action Commands
- makemovie , force to make a movie.
- snapshot , force to take a snapshot.
- restart , restart motion , reading again the config files for all threads.
- quit , exit motion.
http://motionhost.mydomain.tld:port/2/action
makes Motion return a webpage that looks like this
<body>
[[/2/action/makemovie][Make Movie]]<br />
[[/2/action/snapshot][Snapshot]]<br />
[[/2/action/restart][Restart]]<br />
[[/2/action/quit][Quit]]<br />
[[/2][
</body>]]
makemovie\n
snapshot\n
restart\n
quit\n
http://motionhost.mydomain.tld:port/2/action/makemovie
Makes a movie. This is the response
<body>
Movie Made for Thread 2<br />
[[/2/action][
</body>]]
Movie Made for Thread 2\n
Done\n
Detection Commands
- status , returns the detection status.
- start , enable detection.
- pause , pauses detection.
- connection, show the status device connection. ( from 3.2.8 )
http://motionhost.mydomain.tld:port/2/detection
makes Motion return a webpage that looks like this
<body>
[[/2/detection/status][status]]<br />
[[/2/detection/start][start]]<br />
[[/2/detection/pause][pause]]<br />
[[/2/detection/connection][connection]]<br />
[[/2][
</body>]]
status\n
start\n
pause\n
connection\n
http://motionhost.mydomain.tld:port/2/detection/start
Start detection. This is the response
<body>
Detection start for Thread 2<br />
[[/2/detection][
</body>]]
Detection start for Thread 2\n
Done\n
Track Commands
http://motionhost.mydomain.tld:port/2/track
makes Motion return a webpage that looks like this
<body>
[[/2/track/set][Track Set Pan/Tilt]]<br />
[[/2/track/auto][Track Auto]]<br />
[[/2][
</body>]]
set\n
auto\n
Track Set
Sets absoute or relative position for tracking devices.
http://motionhost.mydomain.tld:port/2/track/set?pan=10&tilt=5
makes Motion return a webpage that looks like this
<body>
Track Set relative 10 5 for Thread 2<br />
[[/2/track][
</body>]]
Track Set relative 10 5 for Thread 2\n
Done\n
Track Set Absolute
Set an absolute position.
http://motionhost.mydomain.tld:port/2/track/set?x=5&y=10
makes Motion return a webpage that looks like this
<body>
Track Set Absolute Pan 5 Tilt 10 for Thread 2<br />
[[/2/track][
</body>]]
Track Set Absolute Pan 5 Tilt 10 for Thread 2\n
Done\n
Track Set relative
Set a relative position to current one .
http://motionhost.mydomain.tld:port/2/track/set?pan=10&tilt=-5
makes Motion return a webpage that looks like this
<body>
Track Relative Pan 10 Tilt -5 for Thread 2<br />
[[/2/track][
</body>]]
Track Relative Pan 10 Tilt -5 for Thread 2\n
Done\n
Track Auto
- 0 Disable, Auto tracking feature.
- 1 Enable, Auto tracking feature.
- status Check the status of Auto tracking feature.
http://motionhost.mydomain.tld:port/2/track/auto?value=1
makes Motion return a webpage that looks like this
<body>
Track Auto Enable for Thread 2<br />
[[/2/track][
</body>]]
Track Auto Enable for Thread 2\n
Done\n
Authentication
The deal of authentication is to provide a level of security to grant/deny access to
motion configuration using HttpAPI.
Basic Auth
This method is the same that supports apache, so login/pass will be added as a new parameter
to
motion.conf only :
http_authentication login:pass
The client should send that as HTTP RFC specifies, http browsers will work without any problem.
--
AngelCarpintero - 11 Nov 2007