Project:Tool Access Control/Solexious Proposal
(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
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
Add card
POST /[nodeID]/card/
i.e.
- POST /1/card/
[card to be added],[card added by]
04FF7922E40080,04FF1234540080
returns
- 0 - card not added
- 1 - card added
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
Report tool status
PUT /[nodeID]/status/
i.e.
- PUT /1/status/
1
- 0 - out of service
- 1 - in service
returns
- 0 - not saved
- 1 - saved
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
Tool usage (live)
PUT /[nodeID]/tooluse/
i.e.
- PUT /1/tooluse/
1,04FF7922E40080
- 0 - tool use stopped
- 1 - tool in use
returns
- 0 - not saved
- 1 - saved
Tool usage (usage time)
POST /[nodeID]/tooluse/time/
i.e.
- POST /1/tooluse/time/
34000,04FF7922E40080
returns
- 0 - not saved
- 1 - saved
Case alert
PUT /[nodeID]/case/
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