今回のハンズオンでは、「セキュアリンクサービス SORACOM Arc」(以下、Arc)を用いてみなさんのPCをSORACOMサービスに接続します。
Arcについて詳しくは以下の公式ページを参照ください。
https://soracom.jp/services/arc/
PCでArcを使うには以下の2つの方法があります。
今回は、WireGuardを用いて接続をします。
Arcの利用料金は以下の通りです。
55 円 (SORACOM IoT SIM に追加する場合)
88 円 (バーチャル SIM/Subscriber 単独で利用する場合)
今回のハンズオンでは、ほとんどの方は初めてバーチャルSIMを作成することになりますので、無料枠の中でご利用いただけます。
また、ハンズオン終了後にバーチャルSIMを解約しないでも、翌月以降費用が発生することもありません。作成時の初期費用が無料になるのも最初の1回だけなので、そのまま残しておくのをお勧めします。
WireGuardはオープンソースのVPN実装です。OpenVPNやIPsec等に比べ、セットアップが非常に容易で、パフォーマンスにも優れているという特徴があります。
Linuxのカーネルモジュールでの実装の他に、アプリケーション(ユーザー空間)での実装があります。
詳細は公式ページをご覧ください。
https://www.wireguard.com/
今回のハンズオンでは、「データ転送サービス SORACOM Beam」(以下、Beam)を用いてOrbitで加工した、ボタンシュミレータから受信データをLine Notifyに転送します。
Beamについて詳しくは以下の公式ページを参照ください。
https://soracom.jp/services/beam/
Beamの利用料金は以下の通りです。
1 リクエスト(*) あたり 0.00099 円
※エントリーポイント (Beam) へのリクエスト、Beamから転送先へのリクエスト、それぞれを個別に 1 リクエストとカウントします。
今回のハンズオンでは、それぞれ個別のアカウントで作業を行い、リクエストも通常であれば100,000リクエストには達しませんので、無料枠の中でご利用いただけます。
今回のハンズオンでは、「データ収集・可視化サービス SORACOM Harvest」(以下Harvest)を用いてボタンシュミレータから受信したデータを可視化します。
Harvest自体は、データの蓄積(Harvest Data)とファイルの保存(Harvest Files)の2つがありますが、今回は、Harvest Dataのみ扱います。
アップロードされたデータは標準で40日間保存されます。
Harvestについて詳しくは以下の公式ページを参照ください。
https://soracom.jp/services/harvest/
Harvestの利用料金は以下の通りです。
書き込みリクエスト: 1 リクエストあたり 0.0044 円
1 SIM カード / デバイスあたり 1 日 2,000 リクエストまでの料金は上記の「Harvest 利用オプション」の料金内に含まれます。
2,001 回目のリクエストから課金対象です。
SORACOM Harvest は無料利用枠をご提供しています。
1 アカウントあたり毎月 31 日 分の「Harvest 利用オプション」が無料です。(月末締めで自動で計算されます。)
2 つの SIM カード / デバイスで 15 日だけ利用した場合なども合計で 31 日以内なので無料利用枠の対象です。
無料利用枠内で利用している場合でも、書き込みが 1 日 2,000 リクエストを超えた分は従量課金が発生します。
月内の利用日の合計が 31 日以内でも無料利用枠が翌月に持ち越されることはありません。
今回のハンズオンでは、バーチャルSIM1つを用い、書き込みも通常であれば2,000リクエストには達しませんので、無料枠の中でご利用いただけます。
今回のハンズオンでは、「インラインプロセッシングサービス SORACOM Orbit」(以下Orbit)を用いてボタンシュミレータから受信したデータを加工します。
今回は、時間の都合上事前に用意したWASMを用います。
Appendixとして、開発環境構築、コード準備、ビルドを行う方法も記載しておりますので、興味がある方はそちらも合わせて行なってください。
Orbitについて詳しくは以下の公式ページを参照ください。
https://soracom.jp/services/orbit/
Orbitの利用料金は以下の通りです。
Orbitを利用したSIMの数に応じて、料金が発生します。
SIM 毎に 22 円/月
オペレーター単位にリクエスト数の合計数に応じて料金が発生します
10,000 リクエストあたり 44 円
1 アカウント、カバレッジごとに、以下の無料利用枠をご提供いたします。
無料利用枠: 1SIM分
リクエスト無料利用枠: 10,000リクエスト分
今回のハンズオンでは、バーチャルSIM1つを用い、リクエストも通常であれば10,000リクエストには達しませんので、無料枠の中でご利用いただけます。
今回のハンズオンでは、LINE Notifyを使って、LINEに対して、通知を行います。
以下のような特徴があります。
No Money - 有料プランはなく、完全に無料
No Provider - アクセストークンを発行するだけなので管理が楽
No User ID - ユーザーIDの指定不要
LINE Notifyについて詳しくは以下の公式ページを参照ください。
https://notify-bot.line.me/ja/
LINEに通知を送ることができるサービス「LINE Notify」の API を呼び出すために必要なトークンを取得します。
Tokenを取得するために、Line Nofityにログインします。
ログインしたらトークンを取得します。なお、ここで発行したトークンは同じものは再発行できないので、無くなさないようにお願いします。
トークン名 : soracom-handson
(名称は任意です)
通知を送信するトークルーム : 1:1でLINE Notifyから通知を受け取る
設定がうまく進まないときにご覧ください。ここまでの作業が出来ている場合は次に進んでください。
再発行できないので、再度トークンの発行の手順を行ってください。
PCからSORACOM Arcに接続するための必要な VPN ソフトウェア「WireGuard」をインストールします。OS 毎の解説を確認してください。
wireguard-installer.exe
をダウンロードします。wireguard-installer.exe
を実行します。WireGuardに設定する接続情報をSORACOMから入手します。接続情報は「バーチャルSIM」をSORACOM上で作成することで生成されます。
次に、SORACOMのコンソールからArcのバーチャルSIMを作成します。
soracom-arc
)を設定した後、テキストエリアにバーチャルSIMの作成時に保存しておいたWireGuard 接続情報上書きして「保存」を押します。ping pong.soracom.io
」と入力し、リターンキーを押します。以下のように、pingへの応答があれば成功です。設定がうまく進まないときにご覧ください。ここまでの作業が出来ている場合は次に進んでください。
[Interface]
PrivateKey = クライアントピア秘密鍵
Address = クライアントピアIPアドレス
[Peer]
PublicKey = サーバピア公開鍵
AllowedIPs = 100.127.0.0/16
Endpoint = サーバエンドポイント.
SORACOMの各サービスを使うには、SIMをSIMグループへ登録する必要があります。
ここでは、まずSIMグループを作成します。
ex)handson-soratan-20210821
作成したSIMグループに、Arc設定時に作成したバーチャルSIMを所属させます。
ボタンシュミレータからのデータを適切なフォーマットに変換するバイナリパーサーの設定を行います。
@button
]と入力します。今回のハンズオンでは、SORACOM LTE-M Button for Enterprise(通称:しろボタン)の代わりに、シミュレータソフトを用います。
現在公式に配布しているバイナリーは、以下の環境で動作確認が取れています。
これ以外の環境をお使いでバイナリが動かない場合は、Node.js + Electronが動く環境であればソースコードからビルドすることで動作すると思われますが、本テキストではビルド環境の構築については触れませんのでご了承ください。
以下のURLから、ご自身の環境に合わせたバイナリをダウンロードしてください。
https://github.com/kenichiro-kimura/soracom-button/releases/tag/v0.2.0
Windowsの場合はスタートメニューから、Macの場合はFinderなどからクリックすると起動します(アプリケーション名:soracom-button)。
Macの場合、インストールしたアプリを実行しようとすると、開発元が不明なため開けないと警告が出る場合があります。
その場合は、Finderでアプリを表示して、Controlキーを押しながらアプリケーションアイコンをクリックして、ショートカットメニューから「開く」を選択します。
起動すると以下のような画面が表示されます。
メニューの機能は以下の通りです。
メニュー名 | サブメニュー名 | 機能 |
File | 終了 | アプリケーションを終了します |
View | サイズ | ウインドウサイズを大/中/小から選択できます。デフォルトは「大」です |
ステッカー | ボタンにステッカーを貼って見た目を変えられます。しろボタンとUGバージョンがあり、デフォルトは「しろボタン」です | |
Help | SORACOM LTE-M Button for Enterpriseユーザーガイド | SORACOMの公式ページが開きます。今回は利用しません。 |
Open devTools for WebView | デバッグ用です。今回は利用しません。 |
Viewから見た目やサイズを好きな物に変えてみてください。動作自体は変わりません。
大きな丸が、ボタンになります。ここをシングルクリック・ダブルクリック・ロングクリックすることができます。クリックすると、SORACOMにデータが送信されます。
小さな丸が、LEDになります。通信中はオレンジに点滅し、5秒ほど点滅をしたあとに実際に通信が発生します。通信結果が成功であれば緑に、失敗であれば赤に1秒ほど点灯します。
「バッテリーレベル」のドロップボックスで、送信するバッテリーレベルを変更できます。バッテリーレベルは1.0/0.75/0.5/0.25から選べます。
「送信状況」の部分に現在の通信内容(例:シングルクリックでバッテリーレベル1.0を送信中)が表示され、通信終了後は通信結果(成功/失敗)が表示されます。
SORACOM Arcで作成したバーチャルSIMの通信状況を、次でセットアップするSORACOM Harvest Dataで見ながら、色々なタイプのクリック情報やバッテリーレベルを送ってみてください。
Harvestを有効化します。
これでHarvest Dataの準備はできましたので、シュミレータのボタンをクリックしてみましょう。
Harvestでは、データの参照、グラフ(3種類)、位置情報を確認することができます。
ボタンシュミレータからのデータを、生データ、一時処理済みデータ、グラフデータの3種類で見ることが可能です。
ボタンシュミレータをクリックして、データが格納されることを確認します。
グラフは、折れ線、棒、積み上げの3種類から選べます。
右側の[DATA SERIES]に表示可能なデータが一覧で出てきます。
初期状態では、全データ表示するようになっていますので、
[ClickType]だけを選択します。
右側のグラフ部に、ClickTypeのみ選択されているのがわかると思います。
デバイスの位置情報を確認することが可能です。
(注)ハンズオンで利用しているシミュレータでは、位置情報は表示されません。これはSORACOM Arcが簡易位置測位機能に対応していないためです。
今回のSORACOM OrbitのWASMファイルは事前に準備しておりますので、まずはそれをダウンロードします。
https://github.com/soracomug/soracom-arc-v-button-handson/raw/main/soracomOrbit/soralet-wasm.zip
先ほどダウンロードしたWASMファイルをSoraletとしてアップロードします。
ex ) handson-sorataro-20210821
ex) srn:soracom:OP0123456789:jp:Soralet:handson-sorataro-20210821/1
SIMグループに先ほど追加したSoraletを紐づけて、Orbitを有効にします。
ボタン : ON
CODE SRN : 先ほどコピーしたSoraletのSRNを貼り付けます。
その際、/1の部分を /$LATESTに変更します。なお、入力フィールド
横の歯車ボタンを開くと表示される選択画面で、先ほど作成したSORALETとSORALET VERSIONを選んでも構いません。
CONTENT TYPE : applicaiton/json
メタデータ : ON
DIRECTION : uplinkのみチェック
設定がうまく進まないときにご覧ください。ここまでの作業が出来ている場合は次に進んでください。
正しいWASMファイルを指定していない可能性がありますので、
解凍済みのWASMファイルを指定してください。
再度ダウンロード、解凍しても同様のエラーになる場合は講師にご連絡ください。
SIMグループにおいて、Beamの設定を行い、Line Notifyに通知できるようにします。
プロトコル : HTTPS
ホスト名 : notify-api.line.me
ポート番号 : 443
パス : /api/notify
アクション : 追加
ヘッダー名 : Authorization
値 : Bearer Line Notifyで取得したToken
この状態で、Line Notifyに通知が行われるようになっています。
ボタンシュミレータをクリックし、以下のようなメッセージが送られるか試してみましょう!
設定がうまく進まないときにご覧ください。ここまでの作業が出来ている場合は次に進んでください。
・Beamの設定が正しく行われていない可能性がありますので、
[Beamの設定]を再度確認してください。
・WireGuardは有効になっていますか?
[WireGuardの設定]を再度確認してください。
・Orbitは有効になっていますか?
[Orbitの設定]を再度確認してください。
・SORACOM Air for セルラー設定が正しく行われてない可能性がありますので、 [SORACOM Air for セルラー設定]を再度確認してください。
・SORACOM Orbitが正しく行われてない可能性がありますので、
[Orbitの設定]を再度確認してください。
放置しておいても、課金が発生することはありませんが、後片付けを行います。
すでに今回のハンズオン以外で、Orbit、Harvestなどのサービスをお使いの場合は、料金が発生しますので、不要の場合は削除を行ってください。
バーチャルSIMについても、アカウントに1つだけは無料で保持できますので、そのままでも問題ありません。1つ以上お持ちの方のみ、不要の場合は削除を行ってください。
OS標準のアンインストール方法で削除します。
こちらもOS標準のアンインストール方法で削除します。
登録したままでも問題ありませんが、不要の場合は削除してください。
Soraletも残しておいても問題ありませんが、不要な場合は削除します。
Soraletを削除するためには、まずOrbit側での設定を削除します。
SIMグループを削除するには、紐づいているSIMグループを削除してから削除する必要があります。
なお、SIMの紐付けがあると、エラーになりますので、必ずSIMの紐付けを全部解除してから行ってください。
ここまでで、ハンズオンは終了です。お疲れ様でした!
ここでは、SORACOM LTE-M Button for EnterpriseまたはSORACOM LTE-M Button Plus(通称 : ひげボタン)をお持ちの方向けに、ボタンシュミレータと同じ設定でSORACOM LTE-M Button for Enterpriseを動かすような設定を行います。
こちらでは簡易位置測位機能を使うため、課金が発生しますので、ご注意ください。
1 SIM / 1 ボタンあたり : 月額 55円
(月間750リクエストまでの位置情報利用を含みます)
月間750リクエストを超過したリクエストに対しては
0.165円 / リクエスト となります。
ハンズオン本編では、メッセージにはボタンのクリックタイプ、バッテリーレベルしか案内していませんでしたが、位置情報を表示することも可能です。まず、そちらのバージョンも試してみます。
ただし、ボタンシュミレータでは、位置情報は取得できないため、緯度経度はそれぞれ0.0と表示されます(アフリカ大陸西岸の大西洋上、通称ヌル島)
先ほどダウンロードしたWASMファイルのもう1つ[soralet-optimized-with-geo.wasm]をSoraletとしてアップロードします。
最初のOrbitの設定時に、Soraletのバージョンを$LATESTにしたので、自動的に最新バージョンであるVersion 2が利用できるようになっています。
ボタンシュミレータをクリックし、以下のようなメッセージが送られるか試してみましょう!
バーチャルSIMをSIMグループに登録した手順と同じ方法で、SORACOM LTE-M Button for Enterprise用のSIMをSIMグループに登録します。SORACOM LTE-M Button Plusでも手順ならびに動作は同様です。
以下の2カ所を設定して、簡易位置測位機能を有効にします。
実際にボタンをクリックすることで、以下のようなメッセージが通知されます。現在ボタンを押している場所のおおよその位置が表示されていると思います。
ここでは、SORACOM Orbitの開発環境をセットアップし、ハンズオンで使ったWASMのソースコードを修正して、メッセージを変えてみます。
参考ページにも記載がありますが、
前提条件として、VSCodeとDockerをインストールしておく必要があります。
https://users.soracom.io/ja-jp/docs/orbit/setup/
今回のサンプルはAssemblyScriptとなっています。
https://github.com/soracomug/soracom-arc-v-button-handson/blob/main/soracomOrbit/src/index.ts
lat(latitiude)が緯度
lon(longitude)が経度
になります。
「npm run build:optimized」
正常終了すれば、assembly/build/ 以下にsoralet-optimized.wasmが生成されます。
ボタンシュミレータをクリックし、修正したメッセージが送られるか試してみましょう!