#はじめに
Bluemixのnode-redのOutput NodeにTwilioのAPIがあったので試してみました。
今回は、Twilioのトライアルアカウントを使用し、OpenWeatherMapのAPIを叩き、現在の天気と気温を自分のスマートフォンのSMSに送付してみました。朝出かける前に、SMSに天気と気温の情報が飛んでくるとうれしいですよね。
これを実現するアプリはいくらでもあると思いますが、Node-redとTwilio APIを使うことで、ほぼコーディングレスで、30分程度で実現できてしまいます。
#前提 & 注意事項
- Bluemixは登録済みの前提で記載しています。登録はこのあたりを参考にして下さい。
- Twilioのトライアルアカウント取得済み。またトライアルアカウントからSMSを送信する際には下記の点に注意が必要です。(こちらの投稿を参考にさせて頂きました。)
- +81から始まる日本の番号ではSMSは送信できず、+1から始まる米国の電話番号を取得する必要が有る
- 検証済みの電話番号(自分スマホの番号)にのみSMSを送信可
#Node-Redプロジェクトの準備
BluemixのカタログのボイラープレートからNode-redを選択し、プロジェクト名を入力し、アプリケーションを作成します。
ステージングが完了後、作成したアプリケーションをダッシュボード上で開き、表示されるURLをクリックし、Node-Redのフローエディタを開きます。
フローの作成
使うNodeは下記の5種類です。()内はNodeのカテゴリ、及び、使用目的です。
- Inject ( Input, SMS送信時刻の設定、OpenWeatherMap APIにHttp Get Requestを送信するトリガー)
- http request ( Function, OpenWeatherMapにHttp Get Requestを送信)
- function ( function, OpenWeatherMap APIからのJSON Formatの天気情報からSMSメッセージを作成)
- Twilio ( Output, SMSをスマートフォンに送信)
- Debug ( Output, デバッグ用の情報の出力)
各Nodeの設定
1. Inject Node
Repeatの設定を「at a specific time」とし、データがInjectされるスケジュールを設定。ここでは、平日の毎朝7時に、その時点の天気と気温がSMSで送付されるように設定します。
2. http Request
OpenWeatherMapのCurrent Weather Data APIにhttp GET Requestを送信し、現在時点の東京の天気情報を取得します。Nodeのプロパティーを下記のように設定。
- Method: GET
- URL:
http://api.openweathermap.org/data/2.5/find?q=Tokyo&units=metric
- Return: a parsed JSON object
3. function
OpenWeatherMapのAPIからは、最高・最低気温やら湿度やら様々な情報がJSON形式で帰ってきます。今回は「晴れなのか、曇りなのか」といった天気の概要と、その時点での気温のみを使用。
Function Nodeの機能としては、JSON形式の返答から天気と気温のValueを取り出し、Messageを作成してそれをReturnする関数を作成すれば良いので、下記のように関数を定義してやればよいです。
var tenki = "現在の天気は" + msg.payload.list[0].weather[0].description + "/";
var kion = msg.payload.list[0].main.temp + "°Cです。";
return {payload: tenki + kion};
4. Twilio
Twilio APIを使用してSMSでを送付するための設定をしていきますが、まず、Twilioにログインし、TwilioのAPI クレデンシャルを確認します。API クレデンシャル情報は「アカウントセッティング」で確認することができます。
Node-RedのTwilio Nodeで、AccountSID, Authtokenを設定します。また「From」には、取得した米国のtwilio電話番号をセットします。
「SMS to」には、検証済み電話番号を記入します。この時、電話番号の先頭の「0」は不要で、080で始まる電話番号ならば、国番号をつけて、「+8180********」といったように記載します。
動作確認
Debug Nodeは特に設定は不要で、Nodeのフローと各Nodeの設定が完了したら、Deployボタンを押すと、稼働準備が完了します。
土日以外07:00に動作するように設定しましたが、Inject Nodeの左側をクリックすることで、Manualで動作させることが可能です。設定がうまく行っていれば、ケータイにその時点の天気と気温がSMSで送られます。