Live Drawing Show!
Goal:
- User will draw on the website’s draw page. The Axi Draw will update based on user’s drawing. There will be a camera that is recording. The recording will be sent to the website’s live stream page so others can see the live stream of the drawing.


—
Functionality:
- Co-Draw allows people to contribute to a drawing using a web interface
- Control the Axidraw’s position based on the user’s mouse x and y position on the website.
- Include a camera that video records the Live Drawing show. The live stream will be posted on a separate page on the website.
- Ideally: use socket.io to allow 2 people to draw at the same time.
—
REST API:
1.) Identify Axi Draw Machine
- Address: /identify_axi
- Method: ?
2. ) Find current position of the user’s mouse x and mouse y on the website
Address: /pen_position
Method: post
Body:
{ “mouse_x”: 2344, “mouse_y”: 281, “state” : 1 //pen state is from 0 to 1 (down/on) }
Response:
“coordinates”: [ { “success”: { “type”: “200”, //ok “mouse_x”: “2344”, “mouse_y”: “281”, “state”: “1” }, “error”: { “type”: “400”, //error “details”: “invalid inputs” } } ] }
3. ) Set to original position when user presses Reset Button
Address: /original
Method: POST
Body:
{ “mouse_x”: 0, “mouse_y”: 0, “state” : 0 // off }
Response:
{
“original_position”:[
“success”:
{
“mouse_x”: 0,
“mouse_y”: 0,
“state” : 0 // off
},
“error”:
{
“type”: “400”,
“details”: “invalid inputs”
}
]
}
—
Video for live stream
4.) Get channel
Address: /channel
Method: GET
Body:
Response:
{
“channel”:[
“success”:
{
“recording”: on, //turn channel on or off
“channel_id”: {channel_id}, //integer
“width": 1920px,
"height": 1080px
},
“error”:
{
“type”: “400”,
“details”: “invalid inputs”
}
]
}
5.) Post channel data to client
Address: /channel
Method: POST
{
“channel”:
“recording”: on, //turn channel on or off
“channel_id”: {channel_id}, //integer
“width": 1920px,
"height": 1080px
}
—
Reference: