研究室に誰がいるかをslackから確認するシステムを作った

作ったもの


概要

  • 10分に1回ラズパイからローカルipに向かってpingし、arpMacアドレスを取得してユーザーを特定しデータベースに登録を行う。

f:id:matatsuna:20170417120424p:plain
f:id:matatsuna:20170417120429p:plain

  • slackのスラッシュコマンドでデータベースから最新の情報を取ってきて返す。

f:id:matatsuna:20170417120008p:plain
f:id:matatsuna:20170417120014p:plain

使ったもの

ハードウェア
ソフトウェア

技術的なこと

raspberry pi

10分間に1回プログラムを実行する

cronを使いました。
クーロン(cron)をさわってみるお - Qiita

arpコマンドでMacアドレスを取得する

まず、Macアドレスは端末が必ず持っていてほぼユニークなアドレスで同じネットワーク内の端末からは、ipアドレスと一緒に知ることができます。Wifiにつながってる状態であれば、ロック画面やスリープに入ったとしても知ることができます。arpテーブルというipアドレスMacアドレスの一覧の表が存在しarpコマンドで参照します。

$ arp

ただ、リアルタイムでarpテーブルを更新するためには、pingを飛ばす必要があります。

$ sudo ping -c 1 -W 1 192.168.xxx.xxx
$ arp -a 192.168.xxx.xxx

これを10分に1回100ipほどに行い、同じネットワーク内にある端末のMacアドレスを取得します。
ネットワークに負荷がかかるので、本当はこんなことしたくない....

hoge.localにアクセスすると登録できるようにする

Raspberry Piにホスト名の設定をしたメモ – 1ft-seabass.jp.MEMO
この設定を行い、index.phpを/var/www/html/に配置して登録フォームを設けました。
なお、ブラウザからhoge.localでアクセスできるのはMac,iOSのみで、windowsAndroidはip直打ちです。

slack 側

スラッシュコマンドを作る

f:id:matatsuna:20170415183405p:plain
これじつは作れます。https://ほげふが.slack.com/apps/manage/custom-integrations
しかも仕組みは簡単で、

 /コマンド名 引数 

この引数をそのままテキストでGETかPOSTを好きなアドレスに対して送ることができます。httpのサイトへも可能です。jsonで返してあげると結果をslackに投稿してくれます。
Slash Commands | Slack
データベースの最新情報を返すだけのphpにスラッシュコマンドからリクエストを送るようにしました。

まとめ

研究室にいることをわざわざカードをかざしたり、カメラを設置して監視するのは、なんか嫌だなーって思っていて、普段通りの生活を送ってる中でなにかトラックングできないか考えたらこの方法を思いつきました。さり気なく監視してる感が余計に怖いですが。
10分間に1回ごとの情報がデータベースに貯まるので、研究室に来てない人がわかったりするので、M1,B4の先輩たちからすごく嫌がられましたw

老害とは何かを考えてみる

早いもので、2016年度が終わります。大学生活も1/2か1/3かが終わりました。
そろそろ本格的に意識しようとしてるのが老害にはなりたくないなということです。
まとまらずに思うがままに書きます。殴り書きです。

老害とは

google先生に聞いてみた

自分が老いたのに気づかず(気をとめず)、まわりの若手の活躍を妨げて生ずる害悪。

なるほど。確かにそういう印象の単語だなと。

どうしたら若手=後輩を妨げないか

ここでの若手は後輩とする

やってることに口出ししない

これが一番大事な気がする。せっかく頑張って作ったり発表したり、計画しているのに、それを途中で折られたらたまったもんじゃないはず。
やる気をなくす原因になりそう。でも口出しを願う後輩もいるので難しいところ。明らかに助言を求められてから話すようにしたい。
注意すべき場所:Twitter

意見を素直に受け取る

「これをやりたいんです!」と言われ、その実装がめんどくさいということがあったとする。そのときに、それはめんどくさいからと諦めるように言うのは、せっかく挑戦しようとしてるのに、自分の経験則から妨げてしまうことになるのかなと思う。めんどくさいけど、一緒に考えてあげるとかしたほうがいいのかも。
注意すべき場所:プログラミング課題

ぶっ飛んで本人がわからない話をしない

自分がわかってるからどこまで、後輩が知っているかわからなくなるときが多くある。そのときに、後輩がわからなくても沢山の話を続けるのは避けたい。
注意すべき場所:対面

後輩が先輩の助けを借りたいときに借りれるような感じになりたいですよね。

そもそも一番は、プログラミングのスキルは壁にぶち当たりながら頑張って成長してほしい。

これを書くことが老害かもな

2016年度 B2制作物まとめ

4月

ゼミ「php一次元バーコード作成」


matatsuna.hatenablog.com

5月

「pinhashtag」


matatsuna.hatenablog.com

ゼミ「pictureadd」


matatsuna.hatenablog.com

「EP演習飛び入り発表」


6月

ゼミ「pictureAlive」


matatsuna.hatenablog.com

Raspberry Piにwin10coreを入れる」


Raspberry PiでUnityちゃんを動かす」


君の名は。読破する」


7月

matatsuna.hatenablog.com

「Unityのパーティクルで花火」


「Azure/Xamarin」


「mousePCを買う」


8月

オープンキャンパス「Songle☓pictureadd 」

「歌詞表示ソフト」



「UnityEditorでSongleを表示する」


9月

matatsuna.hatenablog.com

ゼミ「京都合宿」


ゼミ「slack bot

matatsuna.hatenablog.com

10月

「お天気bot


ゼミ「2015年度EP演習解析」




cmp2「同時閲覧サイト」


ゼミ「AttractiveとUnattractiveな顔画像をOpenCVからの特徴量をSVMに入れてみた」

matatsuna.hatenablog.com

11月

ゼミ「夏目漱石芥川龍之介宮沢賢治太宰治江戸川乱歩の作品からTFの特徴量をSVMに入れて分類分けしてみた」

matatsuna.hatenablog.com


matatsuna.hatenablog.com

12月

「slackのスラッシュコマンドにpictureadd対応させた」


「wissに参加してきた」


illumiFrame

「Songleの使い方」

matatsuna.hatenablog.com

1月

cmp2「彼女はWebだが役に立つ」


matatsuna.hatenablog.com

CG基礎「日本地図3Dビュワー」


matatsuna.hatenablog.com