先日(10/11)に、IoTLTでLTしてきたので、
LTの準備をする中で得た知識などを、このエントリで整理しておきます。
発表自体は、全力でネタです。

IoT縛りの勉強会! IoTLT vol.20 @ ウフル
http://iotlt.connpass.com/event/38815/

アグリゲート・コンピューティング風IoTでの戦い方

LT発表資料

SlideShareにLT資料をアップしています。

デモ動画

YouTubeにデモ動画をアップしています。

ソースコード

GitHubにソースコードをアップしています。
GR-SAKURA/Arduinoのスケッチは、misc配下に格納しています。

https://github.com/takemikami/iotlt-20161011

システム構成

このLTで実装したシステムは、以下のシステム構成となっています。

iotlt20161011_1

以下で、 GR−SAKURA, ArduinoYUN, Rails部分の実装を簡単に説明します。

GR-SAKURAでのHTTPサーバ実装

ソースコード:
https://github.com/takemikami/iotlt-20161011/blob/master/misc/gr_sketch.cpp

GR-SAKURAは、ArduinoYUNからのHTTPのリクエストを受け付けるので、HTTPサーバとして動作させます。
Arduinoと互換性があるので、以下の記事を参考にして実装することができます。

第6回 Arduinoを使ってWebサーバーをつくろう! | DEVICEPLUS http://deviceplus.jp/hobby/entry_006/

但し、GR-SAKURAにはMacアドレスが記載されていないので、任意の値を指定して起動させるようです。

EthernetのMACアドレス | GR-SAKURA フォーラム http://japan.renesasrulz.com/gr_user_forum_japanese/f/108/t/476.aspx

ArduinoYUNからHTTP-GETの実行

ソースコード:
https://github.com/takemikami/iotlt-20161011/blob/master/misc/yun_sketch.pde

ArduinoYUNはWiFi機能のついた、Arduinoなのですが。
ネットワークへの接続を、
YUN自体をアクセスポイントとして一度起動させてPCのブラウザで設定画面にアクセス、
その設定画面でWiFiのアクセスポイントへの接続を設定するという流れで設定します。

Start with Arduino Yun | arduino.org
http://www.arduino.org/learning/getting-started/getting-started-with-arduino-yun

この設定さえできてしまえば、
HTTP-GETの実装は以下のチュートリアル通りで、特に難しい点は無いと思います。

HTTP Client | arduino.cc
https://www.arduino.cc/en/Tutorial/HttpClient

Railsアプリの実装

ソースコード:
https://github.com/takemikami/iotlt-20161011/blob/master/app/controllers/alert_controller.rb

Alert API | OpsGenie
https://www.opsgenie.com/docs/web-api/alert-api

このRailsアプリはDBを持たないので、以下のように「-O」オプションでnewしています。

$ bundle exec rails new -O

Controllerの実装は、OpsGenieのAlertAPIを呼び出しているのみです。
OpsGenieの「apiKey」は環境変数(Herokuの設定画面で指定)から、引き渡される想定でコードを書いています。