読者です 読者をやめる 読者になる 読者になる

sekaie engineers' blog

セカイエ株式会社が主催するエンジニア勉強会について

SORACOM 入門

IoT SORACOM Hubot

こんにちは。セカイエの大西です。 本日は「セカイエ Advent Calendar 2015」9日目の記事です。

qiita.com

今回は業務では全く関係のない SORACOM について入門したいと思います。
※いや、いつか IoT のプロダクトがあるかもしれないからやってて損は無いはず(๑•̀ㅂ•́)و✧

やること

  • SORACOM の Development tools を使ってゴニョゴニョします
  • コマンド打つだけなのもなんなんで、hubot つかって ChatOps します

環境

  • AWSAmazon Linux に構築します
  • hubot と連携するチャットツールは会社でも使ってる「Chatwork」を利用します
  • node.js、ruby、SORACOM SDK for Ruby などはインストールしてる状態とします

そもそも SORACOM って

SORACOM とは

サイトにも書かれていますが「IoT 向けプラットフォーム」で「プログラマブルなデータ通信」を提供しているサービスです。

サービスは現在、

IoT デバイス向けデータ通信 SIM を提供する「SORACOM Air」と

IoT の高負荷処理(暗号化とか)やクラウドにオフロードする「SORACOM Beam」

というサービスが提供されてます。

今回の記事では「SORACOM Beam」について特に触れませんのであしからず。

SORACOM Development tools を使ってみよう!!

「SORACOM SDK for Ruby」をインストールすることで、CLI が一緒にインストールされます。

今回はそれを使って SIM カードリストの取得、SIM の有効化、通信速度の変更をしてみます。

f:id:sekaie:20151209181632p:plain

上記が登録している SIM カードの情報を Web のユーザコンソールから見た画面です。

SIM リスト取得

登録している SIM のリストを取得してみます。

$ soracom subscriber list
[
  {
    "imsi": "xxxxxxxxxxxxxxx",
    "msisdn": "xxxxxxxxxxxx",
    "ipAddress": "xxx.xxx.xxx.xxx",
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "createdAt": 1448726850034,
    "lastModifiedAt": 1449553610277,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "inactive",
    "tags": {
      "name": "sim-001"
    },
・・・
    "speedClass": "s1.minimum",
    "moduleType": "micro",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "xxxxxxxxxxxx",
    "createdTime": 1448726850034,
    "lastModifiedTime": 1449553610277
  }
]

お!取れた!簡単〜♪

SIM の有効化

では次に SIM の有効化をしてみたいと思います。 上のリストの status という項目があるんですが今は inactiveになってます。 画像で言う 状態休止中 になっている箇所ですね。

f:id:sekaie:20151209181858p:plain

$ soracom subscriber activate --imsi=xxxxxxxxxxxxxxx
[
  {
    "imsi": "xxxxxxxxxxxxxxx",
    "msisdn": "xxxxxxxxxxxx",
    "ipAddress": "xxx.xxx.xxx.xxx",
    "apn": "soracom.io",
    "type": "s1.minimum",
    "groupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "createdAt": 1448726850034,
    "lastModifiedAt": 1449638337793,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "active",
    "tags": {
      "name": "sim-001"
    },
・・・
    "speedClass": "s1.minimum",
    "moduleType": "micro",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "xxxxxxxxxxxx",
    "createdTime": 1448726850034,
    "lastModifiedTime": 1449638337793
  }
]

status が変わって、

f:id:sekaie:20151209181949p:plain

Web のコンソールで見ても変わりました!

通信速度の変更

最後に、通信速度の変更をしてみます。 API 経由で通信速度を変更できるってすごく良い機能ですよね。 何か大きいデータ(画像とか)をアップロードする事があれば、その時だけ速度上げて、終わったらまた遅くするとかを、プログラムだけで完結できちゃいます。

では実際に速度を s1.minimun から s1.fast に変更してみます。

$ soracom subscriber update_speed_class --imsi=xxxxxxxxxxxxxxx --speed-class=s1.fast
[
  {
    "imsi": "xxxxxxxxxxxxxxx",
    "msisdn": "xxxxxxxxxxxx",
    "ipAddress": "xxx.xxx.xxx.xxx",
    "apn": "soracom.io",
    "type": "s1.fast",
    "groupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "createdAt": 1448726850034,
    "lastModifiedAt": 1449639371789,
    "expiredAt": null,
    "terminationEnabled": false,
    "status": "active",
    "tags": {
      "name": "sim-001"
    },
・・・
    "speedClass": "s1.fast",
    "moduleType": "micro",
    "plan": 0,
    "expiryTime": null,
    "operatorId": "xxxxxxxxxxxx",
    "createdTime": 1448726850034,
    "lastModifiedTime": 1449639371789
  }
]

f:id:sekaie:20151209182451p:plain

はい変わりました!API便利ですね!

ChatOps します!

CLI の使い方は大体わかったので、次は Chatwork から命令して結果を取得するようにします。

ソースは以下に公開しておきます。
ぱぱっと作ったので、至らない箇所いっぱいですがとりあえずなので。。

kentaro-onishi/chatwork_soracom · GitHub

こんな感じで動きます。

SIM の一覧取得

f:id:sekaie:20151209181226p:plain

SIM のアクティベート

f:id:sekaie:20151209184529p:plain

エエ感じちゃいます?

おわりに

今後は、 「どこおんのー?」って Chatwork で投稿すると、端末の位置情報と一緒に「ここおんでー!」って返すような仕組みを作りたいなーと思ってます。 簡易見守りサービス的な。。

他には、定期的にカメラで写真とってアップロードとか。防犯対策なるかな?!!

本日はセカイエ Advent Calendar 2015の 9 日目の記事でした。

明日は中島さんです。

ほな!

広告を非表示にする