Project:Tool Access Control/Solexious Proposal: Difference between revisions

From London Hackspace Wiki
Line 24: Line 24:


==Network protocol==
==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 involve "Range: lastcard=" requests to an index page at /card, but that's pretty awkward.  It should be easy to upgrade to a full JSON or hypertext system.
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 card permissions===

Revision as of 02:50, 27 February 2012

(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