# room-places-bot This is the RoomPlaces bot that keeps track of resource position in 2D or 3D space. In order to interact with this bot you can use the library Nutella client library using the methods described below: ## Publish - Subscribe channels | Channel | Function | Direction | Content | | --------------------------------------- | ---------------------------- | ----------------- | ---------------------------------------------- | | /location/resource/add | Add a new resource | client -> server | {rid: '\', model: '\', type: '\'[, proximity_range: \]} | | /location/resource/remove | Remove a resource | client -> server | {rid: '\'} | | /location/resource/update | Update a resource | client -> server | \ | | /location/resources/update | Update resources | client -> server | {resources: [\*]} | | /location/group/add | Add a group | client -> server | {group: '\'} | | /location/group/remove | Remove a group | client -> server | {group: '\'} | | /location/group/resource/add | Add resource to a group | client -> server | {rid: '\', group: '\'} | | /location/group/resource/remove | Remove resource to a group | client -> server | {rid: '\', group: '\'} | | /location/resources/added | Publish added resources | server -> client | {resources: [\*]} | | /location/resources/removed | Publish removed resources | server -> client | {resources: [\*]} | | /location/resources/updated | Update a resource | client -> server | {resources: [\*]} | | /location/room/update | Update the room size | client -> server | {x: \, y: \ [,z:\]} | | /location/room/updated | Notify a room update | server -> client | {x: \, y: \ [,z:\]} | | /location/resource/static/\/enter | Notify resource enter area | server -> client | {resources: ['\'*]} | | /location/resource/static/\/exit | Notify resource exit area | server -> client | {resources: ['\'*]} | | /location/tracking/discrete/update | Update the discrete tracking | client -> server | {tracking: \|{}} | | /location/tracking/discrete/updated | Notify discrete update | client -> server | {tracking: \|{}} | \ ::= STATIC | DYNAMIC \ ::= IMAC | IPHONE | IPAD | IBEACON ## Request - Response channels | Channel | Function | Request -> Response | Request | Response | | -------------------------------------- | ----------------------------- | ------------------- | ----------------- | ------------------------------------------ | | /location/resources | Request all the resources | client -> server | {} | {resources: [\*]} | | /location/estimote | Request all the iBeacons | client -> server | {} | {resources: [\*]} | | /location/room | Request the room size | client -> server | {} | {x: \, y: \ [,z:\]}| | /location/resource/static//inside | Notify resource enter area | client -> server | {} | {resources: ['\'*]} | | /location/tracking/discrete | Request the discrete tracking | client -> server | {} | {tracking: \|{}} | \ ::= {rid: '\', model: '\', type: '\'} \ ::= {rid: '\', (\ | \ | \ | \)} \ ::= {rid: '\', model: '\', type: '\', (\ | \ | \), \ [, proximity_range: \]} \ ::= continuous: {x: \, y: \} \ ::= discrete: {x: \, y: \ [, z: \]} \ ::= \ | \ \ ::= proximity: {[rid: '', distance: '\']} \ ::= parameters: [\*] \ ::= parameters: {(\: '\')*} \ ::= {key: '\' , (value: '\' | delete: true)} \ ::= {name: '\'} \ ::= {x: \, y: \, width: \, height: \, n_x: \, n_y: \, t_x: \, t_y: \} \ ::= 'NUMBER' | 'LETTER'