Raspberry Piを使ってトイレの空き情報を確認できるようにした

Chrome ウェブストア - ucchusma

アイコンはあまり目立たないようにした。

背景

オフィスのフロアにトイレがひとつしかなく、何度も空いているかどうか確認しに行くのが面倒だった。

ヘブンズ・ドア 〜私が行ったら空いてるトイレ〜

先日これを見て自分で作ることにした。

raspberry piを触りたい欲とか、ハンダ付け欲とかもあった。

仕組み


raspberry piはひたすらセンサーデータをherokuに送り続け、clientがそれをpollingする形にした。
当初はraspberry pi上にweb serverを置こうかと思ったけど、台数が増えたりlocalのipが変わったりすることを考えてherokuを併用することにした。

材料

配線図

Fritzingで図を書くの楽しい。
コンデンサはなくても多分問題ないので省いた。

code

#!/bin/sh

for pin in 4; do
   echo $pin > /sys/class/gpio/export
   chown -R www-data:pi /sys/class/gpio/gpio$pin
   chmod -R g+w /sys/class/gpio/gpio$pin
done
#!/bin/sh
GPIO=7      #使用するGPIOポート
PUSHTIME=3  #押す秒数

#初期設定
echo "$GPIO" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio$GPIO/direction
echo "high" > /sys/class/gpio/gpio$GPIO/direction

#5秒間押されるまで待つ
cnt=0
while [ $cnt -lt $PUSHTIME ] ; do
  data=`cat /sys/class/gpio/gpio$GPIO/value`
  if [ "$data" -eq "0" ] ; then
    cnt=`expr $cnt + 1`
  else
    cnt=0
  fi
  sleep 1
done

#シャットダウンの実行
shutdown -h now

参考: Raspberry Piブログ : [コラム] 第8回『ボタン長押しでシャットダウンする電源ボタンを作ろう』

#!/bin/sh -e

...

su -c /home/pi/shutdown-daemon.sh &
su -c /home/pi/set_gpio_pins.sh &

export TOKEN=*********
su -c "cd /home/pi/ucchusma-pi; /home/pi/.rbenv/shims/bundle exec ruby watcher.rb"

...

exit 0

参考

雑感