문제

I'm working on an project that involves an RFID reader. I have written a simple .rb file that reads the RFID tag and outputs the uid. What i want to do now is get that data to my Ruby on Rails application (2.3.x). I really have no idea on how to do this. Another problem is that i need the data at specific points, example: i register a user and i want the associate the RFID tag's uid with this user. How do i do that? Must i use event machine? or simple require the .rb file in my application?

.rb script (this script outputs the uid. How do i send it to my ror (2.3.x) app?

require 'rubygems'
 require 'nfc'
 NFC.instance.find do |tag|
    p tag.uid
end

Thanks.

도움이 되었습니까?

해결책

It seems that you have two parts of your application - a web-enabled front end to your service, and a hardware front end that associates a user with a physical device. I may be wrong but I doubt that when you deploy the app that you would expect the user to walk to your data centre to scan in their tag!

I can see an obvious separation - you need to have an RFID reader physically near the user so they can wave the RFID tag in front of the reader and perform some sort of action, and then a second part where the user is at home and has no access to the RFID reader.

I would suggest keeping these two parts as separate applications and having some logic that associates several RFIDs to a user. In Rails / Active Record you might have a User model and a has_many association to a Tag.

You need to create two applications - your Rails app, and a lightweight desktop application. The desktop application runs locally on your 'scanning' machine. To start with that could be a daemon: look at the "daemons", "daemonize" and "daemon-kit" gems.

In your Rails app you then make a route for creating the assocation between a User and an RFID Tag. Eg. POST to /users/:id/tags

The small application you've written above must send a POST to that address. But how does the application know which username to associate the tag with? Without knowing exactly what you're doing I can't advise. After recognising an RFID you could just ask for the username ( STDIN.gets ) and type it in on the command line, or in a more complicated application generate some sort of token that is unique and is read in via a GET from the scanning application.

Eg. You could run this as a daemon to associate an RFID tag with a User:

require 'rubygems'
require 'nfc'
require 'httparty'

class TagAssociator
  include HTTParty
  base_uri 'example.com'
end

NFC.instance.find do |tag|
  puts "What is your username?"
  username = STDIN.gets
  TagAssociator.post('/users/#{username}/tags', :query => {:uid => tag.uid})
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top