Raspberry Pi でSORACOM 接続+MQTTをしてみよう 前編 [Step 1 ~ Step 5]

  • 27
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

この記事は、春のIoTリレーハンズオン@関西の一環として開催される<SORACOM接続 + MQTT編>のハンズオン用資料です。
本ハンズオンでは、RaspbianをインストールしたRaspberry Pi(以降、ラズパイ)でSORACOMのサービスの基本部分をひととおり使えるようになるまでの手順をまとめています。
GPIOにはA/DコンバータMCP3002を用い、フォトダイオードのアナログ入力を行います。

[Step 1.] SORACOMユーザーコンソールにアクセス

SORACOMユーザーコンソールは、SORACOM Airの管理を行うサイトです。自身の所有しているSORACOM AirのSIMの休止/再開や速度変更、グループ設定などをブラウザ上で行うことができます。
ここでは、SORACOMコンソールにログインして、自身のSIMを特定し、簡単な管理操作を行います。

【ToDo 1.1】SORACOMユーザーコンソールにログイン

自身のPCのブラウザでSORACOMコンソールを表示させ、SORACOMアカウントでログインします。
キャプチャ02.PNG
メールアドレス・パスワードは、ご自身のSORACOMアカウントやハンズオン指定のSORACOMアカウントを入力して「ログイン」ボタンをクリックします。

【ToDo 1.2】自分のSORACOM AirのSIMのIMSI(イムジー)を特定しておく

SIM管理画面が表示されるのでSIMの名前などを入力し検索して、自分のIMSIをパソコン(のエディタなど)にコピーしておいてください。
キャプチャ03.PNG

[Step 2.] SORACOM APIリファレンスでAPIを試す

SORACOM API リファレンスは、Swaggerを用いたインタラクティブなWeb APIドキュメントサイトで、ユーザの認証データを用いてAPIの動作確認が可能となっています。
ここでは、速度変更のAPIを用いて実際に自身のSIMの速度を変更してみます。

【ToDo 2.1】SORACOM APIでスピード変更してみる

SORACOM APIリファレンスサイトにアクセスし「SORACOM ユーザーコンソールのアカウントによる認証:」欄のメールアドレス・パスワードを入力し「認証」ボタンをクリックします。
メールアドレス・パスワードはご自身のSORACOMアカウントやハンズオン指定のSORACOMアカウントを使います。
認証がうまくいくと「認証」ボタンの下に「認証OK」と表示がされ、APIが利用できるようになります。
image

【ToDo 2.2】update_speed_classを実行してスピード変更

・API Key, Token, Operator IDが表示されているのを確認。SORACOMサービスを用いたソースコードに使うことができます。
・下方にスクロールしてSubscriberサブツリー下のupdate_speed_classをみつけてクリックします。
image
・Parametersエリアの「imsi」欄に自分のSORACOM AirのIMSIを入力します。
・(右側のbodyをクリックして)「speed_class」欄に速度クラスを示すJSONパラメータをいれます。
・「Try It out!」ボタンをクリックしAPIを実行。
image
SORACOMユーザーコンソールのSIM管理画面で更新ボタンをクリックした後、自分のIMSI番号を持つSIMの速度クラスを確認する。API実行で指定したspeed_classになっていれば正常に実行されています。
image
ここまではPC上のブラウザの操作でした。次からはラズパイを使います。

[Step 3.] ラズパイの電源をいれてPCからターミナル接続する

ラズパイにWifiドングルまたはLANケーブルをつなぎ、電源を入れます。ターミナルで操作を行う上で必要なVimエディタのインストールを行います。ラズパイはデフォルトでviしか入っていません。Vim(Vi improved)を入れ設定ファイルをカスタマイズしておくことで、作業効率があがるでしょう。
※nanoなど、その他のエディタを用いる場合は割愛してください。

【ToDo 3.1】ラズパイを起動しVimエディタの準備

・PC上のターミナルやTeraTermなどでログインし、piユーザー(パスワード: raspberry)でログインしておきます。
・WiFiもしくは有線LANであらかじめインターネットに接続しておき、以下のコマンドでvimの最新版を入手しておきます。

$ sudo apt-get update
$ sudo apt-get install vim

好みに応じてvimの設定ファイル~/.vimrcを以下のようにしておくと後々操作しやすいかも。

$ vi ~/.vimrc
.vimrc
"#####表示設定#####
set number "行番号を表示する
set title "編集中のファイル名を表示
set showmatch "括弧入力時の対応する括弧を表示
syntax on "コードの色分け
set tabstop=4 "インデントをスペース4つ分に設定
""

[Step 4.] ラズパイからCLIとSDKをいじる

ラズパイ上にSORACOM SDKをインストールし、CLI操作を行います。SORACOM SDKはRubyがインストールされていればどの環境でも利用可能ですが、後ほどSORACOM SDKを用いたソースを使うことと、使用PC(のRubyやシェルの振る舞い)にかかわらず、同一の操作ができることからラズパイにインストールしたSORACOM SDK for Rubyで操作を行います。
※時間があれば、ご自身のPC(Mac, Win, Linuxなど)でRuby環境を構築してSORACOM SDK for Rubyをインストールしてみてください。

【ToDo 4.1】SORACOM SDKのインストール

SORACOM SDK for Rubyを参照してgemコマンドを使いSORACOM SDKをインストールする。ラズパイはsudoが必要である。

【ToDo 4.2】コマンドライン補完

SORACOM SDK for Rubyを参照してコマンドライン補完の指定を行う。ラズパイはデフォルトでbashが使われているため、 ~/.bashrcの最下行に指定を行うとよい(sourceコマンドによる反映を忘れないようにする)。
確認:以下の操作を行って、サブコマンドが補完されるか確認する。

$ soracom sub[tab] #subとキー入力後タブキーを押下
$ soracom subscriber #subscriberサブコマンドが補完されればOK

【ToDo 4.3】.bashrcに認証情報の追加と速度変更による確認

コマンドおよびスクリプトで必要となる認証情報を~/.bashrcの最下行に追加する。
your mailおよびyour passwordはSORACOMコンソールでログインするときに使ったものを入力にします。sourceコマンドによる反映を忘れないようにして下さい。

.bashrc
export SORACOM_EMAIL='your mail'
export SORACOM_PASSWORD='your password'

確認:以下の操作を行って、サブコマンドが補完されるか確認します。
your IMSIは自分のSIMの10桁のIMSI番号を入力します。

$ soracom subscriber update_speed_class --imsi 'your IMSI' --speed-class 's1.fast'

SORACOMコンソールで自分のSIMの速度がs1.fastになっているか確認します。
キャプチャ.PNG

【ToDo 4.4】すべてのSIMの速度をs1.fastにするスクリプトの実行

SORACOM SDK使用例サンプルコードをコピーペーストしてホームディレクトリなどにsora01.rbなどとして保存し、実行してみます。
SORACOMコンソールですべてのSIMの速度がs1.fastになっているか確認します。

$ vi sora01.rb
$ ruby sora01.rb
found 40 SIMs.
change plan to s1.fast
done

【ToDo 4.5】課題:自分のIMSI番号のSIMだけ速度を変更するスクリプトの作成

sora01.rbをコピーして自分のIMSI番号のSIMだけs1.standardにするスクリプトを作成し、実行・確認する。
また、自分のIMSI番号のSIMだけ使用可能にしてください(ヒント: /subscribers/{imsi}/activate)

$ cp sora01.rb sora02.rb
$ vi sora02.rb #ソースを書き換える
$ ruby sora02.rb

ブラウザでSORACOMコンソールを確認してください。
状態が「使用中」に、速度クラスが「s1.standard」になればOKです。
image
次からUSBモデムで実際に接続します。
【ToDo 4.5】の答え

[Step 5.] ラズパイからSORACOM Airを接続できるようにする

SORACOM Airを装着したUSBモデム「FS01BU」をUSBコネクタに接続し、SORACOM Airの接続スクリプトの作成と自動起動の指定をします。
USBモデム「FS01BU」はラズパイが起動している状態でUSBコネクタに差し込むとうまく認識しない場合があるため、差し込む前にあらかじめラズパイをシャットダウンしておきます。

$ sudo halt

【ToDo 5.1】SORACOM Air接続スクリプトを自動起動させる

SORACOM AirとUSBモデムFS01BUを接続するスクリプトがgistで公開されています。このスクリプトをRaspberry Piで自動起動させる手順を行ってください。以下のQiita記事リンクを開いて手順に従い自動起動させるようにします。

もし自動起動できないようでしたら、insserv -rで起動スクリプトを削除し、/etc/rc.localにスクリプトの起動コマンドを入れてやります。

$ sudo insserv -r /etc/init.d/soracomair
$ sudo vi /etc/rc.local

最下行のexit 0の上に以下のように記述してください。

/etc/rc.local
# 10秒実行を待つ
sleep 10 
# 接続スクリプトの実行
sudo sh /opt/sora/connect_air.sh &
# このexit 0が最下行
exit 0

おつかれさまでした!
次は以下のステップを行ってください。