この記事について
12月の頭に学生向けのハッカソンに参加してきました
そこで初めてIoTに挑戦したのでその話をしたいと思います
何を作ったのか
簡単に言ってしまえばお天気アラートです
よく天気予報で雨ってみたのに傘を持って行き忘れるってことあるじゃないですか(ちなみに、僕はよく忘れます)
そういう時に、玄関先に視覚的に雨だよって教えてくれるものがあったらいいよねなんて前々から思っていました
というわけで、今回はそんなお天気アラートを作ることにしました
視覚的にわかりやすい通知方法にはPhillipsのHueという色が変わる電球を使いました
天気予報データの取得とHueの制御にはRaspberry Pi(Model3 Bだったはず)を使いました
実装
実はこのハッカソン、大学の友達と4人で参加しました
春学期に全員Javaの授業を取っていたことので、プログラム部分は全てJavaで書くことにしました
一応コード自体はこの辺りに置いてあります(あんまり参考にはならなさそう)
https://github.com/ShinyaKato/huepi
天気予報データの取得
天気予報データの取得にはOpenWetherMapのAPIを使用しました
24時間先までの天気予報データを取得してその日に雨が降る可能性があるかどうかを判定します
ここの実装は友達に任せてしまったので正直細かいところまではわかってないです
JSONのパースで少し手間取ったようですが、他はスムーズに進んでいたようです
(ちなみに、最後に自分が書いたプログラムと結合した時は一発で動いたのですごく気分が良かったです)
Hueの操作
Hueの操作にはJavaのAPIが用意されていたのでそれを利用しました
(ちなみに、Javaの他にも色々な言語のAPIが用意されているようです)
最初は手元のMacからHueを操作することを目標にして進めていきました
途中で色々詰まりながらもこれはなんとか成功(特にJavaのクラスパスを通すあたりで苦戦しました)
また、色の指定がなかなか曲者でした
普段慣れ親しんだRGB色空間ではなくXYZ色空間をHueに指定してあげないといけませんでした
(これに関してはRGB XYZ
とかでググると色々情報見つかります)
仕方がないのでRGBで決めた色を変換ダイアグラム見ながら手でxyの値を求めてあげるなんていうアナログなことをしてました
Raspberry Piの準備
OSのインストール手順などはググると解説している記事がたくさん見つかったのでそれを参考にインストール
OSイメージのダウンロードには結構時間がかかっていましたが起動自体はすんなりできました
ただ、誰もUSBキーボードを持っておらず起動したものの操作できないなんて状態になってしまいました
幸い(?)チームの一人がUSBマウスを持っていたのでそこから何とかraspi-config
でSSHができる設定に変えました
で、自宅から持ってきたルーターに有線LANでラズパイをつなげてルーターを介してSSHするって形でここからは開発を進めていきました
(応用情報で勉強したお情け程度のネットワークの知識があってよかった、特にDHCPとか)
詰まったポイントとしてはやはりJavaのクラスパスですね
ラズパイでJavaを扱うときはちょっと苦戦すると思った方がいいかもしれないです
(せっかくラズパイなんだからPython使えよっていうツッコミはなしでお願いします)
なんとか動いた
なんとか目標にしてたもの作れました
(作った後すぐにバラしてしまったので動画とかはないのですが)
作った後は沖縄の天気とかオイミャコン(世界で一番寒い場所)の天気とか取得して遊んでました
今回のハッカソンは初めて扱うものばかりでなかなか苦戦しましたが、いい経験にはなったと思います
ちなみに、このハッカソンの後に自分でラズパイ購入しました
できればうちのボロエアコンのオンオフのスケジューリングを赤外線モジュール使ってできたらなとか考えてます
それから、Hueについてなんですけど、この色が変わる電球ってのは通知の先として非常に優れていると思います
アイディア出しの時には「家でくつろいでる時はTwitterの通知とか色で教えて欲しい」なんて意見も出てました
何よりスマホに触らなくても通知先として機能するっていうのがいいですよね
使い方次第で色々なことができる面白いIoT製品だと思います
そんな感じで今年のアドベントカレンダーは終わらせていただきたいなと思います
(技術っぽい話ほとんどしてないけどいいのかな?)