developer's diary

最近はc#のエントリが多いです

raspberry pi イジリ 起動時に勝手にログインしてバーコード読み取りプログラムを起動

f:id:mitsugi-bb:20150910021415j:plain

クラウド+Raspberry pi の組み合わせで簡単なタイムレコーダーのプロトタイプを作ってみてるところ。

Raspberry piが起動したら、あとはバーコードを読み取るだけ!みたいな部分を作成。

肝心なタイムレコーダ部分はサーバ側で記録するのでシンプルなC/Sモデルで作ってます。

Raspberry piが起動した際に、自動でログインする状態に

/etc/inittab ファイルを修正

1:2345:respawn:/sbin/getty 38400 tty1
↓
#1:2345:respawn:/sbin/getty 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1>/dev/tty1 2>&1

ログイン後に起動するプログラムの作成

バーコードの読み取り結果をHTTPでPOSTするプログラムを記述。 単純にバーコードを読み取ると、キーボード入力で値を受け取れるので、その値をpostするだけという簡単仕様

#!/usr/bin/ruby

require 'net/http'

while str = STDIN.gets
  http = Net::HTTP.new('mitsugeek.net') #接続先ドメイン
  response = http.post('/test.php', 'barcode='+str.strip) #接続先パスとPOSTパラメータ
  if response.body = "OK" then
    system('aplay -D plughw:0,0 -q ok.wav') #結果に問題なかった場合スピーカーで音声出力
  end
end

ログイン後にプログラムが起動するように設定

piユーザでログイン時に起動するプログラムとして、.bash_profile に記述

aplay -D plughw:0,0 -q init.wav #システム起動の音声出力
ruby barcode.rb #バーコード読み取りプログラムを起動

そしてreboot

起動した際に、起動音声が出力される。 起動音声や、バーコード読み取り時に出力する音声は、Open JTalkで、 「システムを起動しました」とか「読み取りました」みたいな音声ファイルを作成してみた。

バーコードを読み取ると、バーコードの読み取った値がサーバにPOSTされて、「読み取りました」の音声ファイルが再生される。

感想

クラウド+Raspberry pi の組み合わせはプロトタイプの作成にものすごく相性がよさそう。

今回はバーコードを利用したタイムレコーダーのプロトタイプだけども、

タイムカードの機械を買うより安上がりだったりする。

本格的に利用するとなると、セキュリティ部分が要になるのでこのままだと使えないけども。

通信の暗号化とか。アクセスキーとか。

参考

http://raspi.noob.jp/howto/auto-login/raspi.noob.jp

アマノ タイムカード タイムレコーダー ホワイト BX2000

アマノ タイムカード タイムレコーダー ホワイト BX2000

  • 発売日: 1996/07/01
  • メディア: オフィス用品