Project:Tool Access Control/Solexious Proposal: Difference between revisions
Oskarpearson (talk | contribs) m (→Report tool status: Changed method to POST, and included an example card ID) |
Oskarpearson (talk | contribs) m (→Report tool status: Added question about whether a card ID is required) |
||
Line 93: | Line 93: | ||
''STATUS: Not yet done'' | ''STATUS: Not yet done'' | ||
''QUESTION: should any user be able to take a tool out of service? Should it even require a card ID?'' | |||
===Check tool status=== | ===Check tool status=== |
Revision as of 23:48, 1 May 2013
(ACN refers to Access Control Node, a physical node attached to a tool)
I plan to
- Base the device on the Duemilanove arduino as it fits our needs and has a wide base of users.
- Use the wiznet chip for ethernet support
- Use i2c sm030 rfid readers
- allow different control outputs (relay, Darlington, servo control etc)
- use eeprom memory for internal storage
Services
Mission critical
These must function without networking or main server available:
- Check if card in ACN local db and allow use if is
- Set tool into "out of order" mode
Non critical
- Add cards
- Report back to central server (usage etc)
Progress
I have made a prototype shield for testing code while the full design remains to be tested and produced. http://www.flickr.com/photos/solexious/6865500239/
Design for the full ACNode at: https://github.com/solexious/ACNode
Incomplete implementation of server side is hosted here: https://github.com/asokoloski/tacserv
Incomplete python version: https://github.com/londonhackspace/ACNode
Network protocol
This is mostly RESTful, but not entirely because we're using text/plain (for the small atmega). In particular, the /sync request could actually use /card with weird Range headers, but that's pretty awkward. It should be easy to upgrade to a full JSON or hypertext system.
Get card permissions
GET /[nodeID]/card/
i.e.
- GET /1/card/04FF7922E40080
returns
- 0 - no permissions
- 1 - user
- 2 - maintainer
STATUS: Done
Add card
POST /[nodeID]/grant-to-card/[card_being_granted_to]/by/[card_with_admin_permissions]
i.e.
- POST /1/grant-to-card/04FF7922E40080/by/04FF792AAAAAA
returns
- 0 - card not added
- 1 - card added
STATUS: Done - but not yet tested
Check DB sync
GET /[nodeID]/sync/
Returns first card in db
i.e.
- GET /1/sync/
returns the first card in the DB i.e.
- 04FF7922E40080
GET /[nodeID/sync/[last received card]/
i.e.
- GET /1/sync/04FF7922E40080/
returns either the next card in DB i.e.
- 03FF7922FF008F
or when out of cards returns
- END
STATUS: Done - tested on UI, but not with ACNode
Report tool status
POST /[nodeID]/status/[new_status]/by/[cardWithAdminPermissions]
i.e.
- POST /1/status/0/by/04FF7922E40080
- 0 - out of service
- 1 - in service
returns
- 0 - not saved
- 1 - saved
STATUS: Not yet done
QUESTION: should any user be able to take a tool out of service? Should it even require a card ID?
Check tool status
GET /[nodeID]/status/
Check if the ACNode has been remotely taken out of service, or put back in service
returns
- 0 - out of service
- 1 - in service
STATUS: Done - tested on UI, but not with ACNode
Tool usage (live)
POST /[nodeID]/tooluse/[status]/by/[cardID]
i.e.
- POST /1/tooluse/0/04FF7922E40080
Status is one of:
- 0 - tool use stopped
- 1 - tool in use
returns
- 0 - not saved
- 1 - saved
STATUS: Not yet done
Tool usage (usage time)
POST /[nodeID]/tooluse/time/for/[cardID]/[timeUsed]
i.e.
- POST /1/tooluse/time/for/04FF7922E40080/34000
returns
- 0 - not saved
- 1 - saved
STATUS: Not yet done
Case alert
POST /[nodeID]/case/change/[new_status]
i.e.
- PUT /1/case/1
Alert if the ACNode case is opened
- 0 - case closed
- 1 - case opened
returns
- 0 - not saved
- 1 - saved
STATUS: Not yet done