Control USB Device from Rails App. by using WebSocket
1. Control USB Device
from Rails App.
by using WebSocket
Rubyist Meetup 0.0.3
26/07/2014
Katsuyuki Koga (Class K)
2. Open Cash Drawer when user push
submit button in register Web application
USB
Windows PC
Cash Drawer
My Web App. runs on Browser
My Web App.
also run
on Safari/iPad
3. Approach
• Use Bluetooth between Native iOS
App and Proprietary HW
• Native Module as Chrome Extension
• NPAPI, PAPPI, NaCl Socket API
• WebSocket Server and Native client
competitor s
my first
my current
4. Windows PC
USB
Windows EXE program
(Open Cash Drawer)
Ruby script - HTTP client
My Rails App.
running on Heroku
Pusher AddOn
Call API
WebSocket
GET
Solution Overview
5. Windows PC
USB
Windows EXE program
(Open Cash Drawer)
Ruby script - HTTP client
My Rails App.
running on Heroku
Pusher AddOn
Call API
WebSocket
GET
event_name = = 'open cash drawer'
Pusher[channel].trigger(event_name, {
message: 'open',
cash_drawer_id: cashdrawer_id
})
6. Windows PC
USB
Windows EXE program
(Open Cash Drawer)
Ruby script - HTTP client
My Rails App.
running on Heroku
Pusher AddOn
Call API
WebSocket
GET
- Open WebSocket channel
- Kick Windows EXE when event received
7. require 'pusher-client'
EVENT_NAME = 'open cash drawer'
COMMAND_LINE = '************.EXE **** *****'
channel = "C%d" % COMPANY_ID
options = {:secret => '60978c770***********'}
socket = PusherClient::Socket.new('1***********e17b****1', options)
socket.subscribe(channel, CASHDRAWER_ID)
socket[channel].bind(EVENT_NAME) do ¦data¦
data = JSON.parse data, { symbolize_names: true }
if CASHDRAWER_ID == data[:cash_drawer_id]
system(COMMAND_LINE)
end
end
socket.connect
8. Windows PC
USB
Windows EXE program
(Open Cash Drawer)
Ruby script - HTTP client
My Rails App.
running on Heroku
Pusher AddOn
Call API
WebSocket
GET
Solution Overview
9. Conclusion
• Now, cost/effort of using WebSocket is
very small for RoR/Web App. developers
• Pusher is free up to 5,000 msgs/month
• Heroku just announced to release
WebSocket addon on 07/07/2014
• https://devcenter.heroku.com/articles/websockets
• Web App. + REAL device can be more
smart solution / experience