ソフトバンクのIoT:テックブログ

1NCE(ワンス)IoT SIMのAPIを使ってデータ残量をAWS QuickSightで可視化してみる

文●平塚 飛将/ソフトバンク グローバルIoT事業部 1NCEプロダクトチーム

  • この記事をはてなブックマークに追加
  • 本文印刷

※本記事はソフトバンク株式会社が提供するクラウドテクノロジーブログに掲載された「1NCE(ワンス)IoT SIMのAPIを使ってデータ残量をAWS QuickSightで可視化してみる」(2023年1月20日掲載)を再編集したものです。

この記事では、2022年10月26日から日本で事業開始した低容量IoT回線、1NCEのSIM回線のSIM管理プラットフォームで無償で使える1NCE APIを使って、各SIMカードの残量データをAWS QuickSight上で可視化する方法を紹介します。

1NCE(ワンス)IoT回線プラットフォームとは?

そもそも1NCE(ワンス) IoT回線というもの自体がまだまだ新しいものなので、簡単に特徴をまとめてみます。

・1回線当たり一括2000円+SIMカード代(税・送料別)の支払いのみで、最長10年間、合計500MBに達するまで利用可能(追加チャージ可能)
・IoT SIM Card Businessなら5枚から(初回は1枚から)オンラインで購入可能
・日本を含む、170以上の国と地域において追加料金なしでローミングサービスを利用可能
SIMカードに加えて、ウェブ上の回線管理ツール(CMP)や、お客さまのシステムとのデータ連携を可能にするAPI、安全にデータを伝送するOpen VPNなどの機能を追加料金なしで利用可能
・eSIMやIPSec-VPN(各拠点のLANを相互接続する高セキュリティーのネットワーク)などの機能を、有償の追加オプションとして提供

一番の特徴は、IoT回線でよくありがちな基本料金+従量課金ということではなく、一括で10年間前払いするという部分です。

また今回使ってみるSIM管理プラットフォームについても、2,000円+SIMカード代(税・送料別) の中で使用できるので、気軽にIoTをプロトタイピングしてみるといった使い方もできそうです。

なお、1NCE(ワンス)SIMカードでは法人ユーザーであれば、どなたでもWEBで購入が完結します。

▶ 1NCEショップ

1NCEのSIM回線プラットフォーム自体には、REST APIや、IMEIロック、SMS送信、回線無効化、追加チャージなど、回線に関わる操作が一元的に管理できるものになっています。

1NCE APIの概要

今回使用する1NCE APIの概要についても少し触れておきます。

1NCE APIカテゴリ

・Authorization(認証)
  API接続のために必ず必要なアクセストークンを取得する(1時間で失効する)

・SIM Management(SIM管理)
  SIMの使用状況の取得、トップアップ操作、利用上限の設定などが可能

・Order Management(オーダー管理)
  SIM購入履歴の取得、購入操作

・Product Information(製品情報)
  購入できるSIM種類を取得

・Support Management(チケット管理)
  アカウントに紐づいているチケット履歴、チケット作成が可能(返信はできない)

・1NCE OS(ソフト開発ツール)
  データ変換、保管、位置情報など顧客側のIoTシステム開発の補助となるようなAPIを準備(2023年1月リリース予定)

また、1NCE APIの利用は基本無料にはなりますが、あまりにも大規模かつ高頻度のコールを行ってしまうと、システム稼働に影響が出る可能性があると注意書きされていますので、実際の設計の際には注意もしくは事前に1NCEサポートに相談する必要はありそうですね。

1NCE APIの実装方法については、APIベストプラクティスも併せてご参照ください。

今回の検証構成と検証背景

それでは改めて、今回の検証構成になります。

また、そもそもの今回の構成背景ですが、1NCE SIMを特に企業の管理部門で実際のデータ残量などを管理する際に、デフォルトの状態だと1NCE ポータルに入って、ダッシュボードでサマリだけを確認するか、もしくは各SIMのページに行って、確認するかしか方法がありませんでした。

各SIMの残量を手っ取り早く一目で確認したいのであれば、個別にシステムを準備してデータ残量を定期的にAPIで取得すればいいわけですね。

想定事例

SIMの使用状況(データ残、SMS残)を一括で取得したい

解決方法

SIMのICCIDを利用して、SIM1枚毎にAPIで残容量を取得する

因みに今回はEC2にAPIを叩かせていますが、小規模の構成であればAWS Lambdaなどに叩かせれば完全にサーバーレスのシステムを構築することが可能です。但しLambdaは、VPC上に配置しないとRDSに到達できなかったり、逆にVPC上の置くと外部のAPIを叩くためにはNAT-GWを配置したりしなくてはならなくなり、構成が複雑になるので、今回はできるだけシンプルな構成にしています。

設定手順

ここからは実際の構築手順になりますが、インフラ構築部分は本記事の本筋ではないので、簡単に飛ばしていきます。

EC2とRDSを作成する

今回はEC2はAPIに叩かせて、RDSにSQLを書き込まれればいいだけなので、適当なEC2をPublicサブネットに配置して、RDSに到達できるようにセキュリティグループを設定しておきます。

またQuickSightからRDSにアクセスする際に、RDSがPrivate subnetにおいてあると、QuickSightで1つの上のサブスクリプション(エンタープライズプラン)が必要になってきます。

もしコストを節約したいのであれば、RDSをPublic subnetにすれば、スタンダードプランでアクセスが可能です。但しその場合は、RDSのセキュリティグループを適切なものに制限しておく必要があります。

因みに今回はRDSは、phpmyadminのインポート機能を使いたかったので、MySQLで作成しています。

RDSにテーブルを作成する

次にRDSにテーブルを準備していきます。

1.ポータル内にあるICCIDリストをエクスポートする
2.テーブルを作成する

ポータル内にあるICCIDリストをエクスポートする

先ずは、1NCEポータルにログインしていきますが、エクスポートする前に出力データを調整しておきます。

表示列の調整をクリックして、不要なデータをチェックを外しておきます。今回はICCIDとIMSIだけで良いので、それ以外のチェックを外します。

表示列の調節ができたら、My SIM>SIMリストをのエクスポートをクリックします。

出力するデータが多いと時間がかかることがあるみたいですが、数分待つと同じ画面の”SIMリストのエクスポート”部分でファイルがダウンロードできるようになります。

ダウンロードしたものの中身を見てみましょう。

ファイル名はCSV(カンマ区切りファイル)になっていますが、記述方法はTSV(タブ区切り)方式になっているので注意しましょう。

今回は、このエクスポートされたファイルをそのままphpadminなどでSQLで読み込ませたいので、以下のようなテーブルを作成していくことにします。

RDSにSIMリストを入力する

RDSの準備ができたら、早速テーブルにSIMデータを作成していきます。

SIMのICCIDリストも、APIで1つずつ呼び出すことも可能ですが、SIMカードが勝手に何枚も増えていくことは早々ないので、この部分はマニュアルで実施していきます。

1NCEポータルからダウンロードしたTSVファイル(タブ区切り)のファイルをExcelなどで開いて、SQL文に書き換えていきます。

あとはこれをphpadminで読み込ませるか、MySQLコマンドで実行させるなどで、テーブルに入力していきます。

こんな感じでデータが入力できたら、データベースの準備が完了しました。

1NCE APIでデータ&SMS残量を取得&SQL書込みをするコードを作成する

あとはEC2でコードを書いていきます。コードの中身の説明は詳しくは説明しませんが、Pythonにて以下のことをさせています。

・認証コードの取得
・ICCIDリストの取得
・データ残量の取得とデータ更新
・SMS残量の取得とデータ更新

そもそもAmazon LinuxにはPythonが入っていないので、Pythonも併せてインストールしておきます。

また今回は、API出力の構文解析用にPythonのrequests、RDSとの接続用にmysql.connectorのライブラリを使っていますので、事前に以下コマンドでインストールしておいてください。

これで環境準備が整いましたので、あとはコードを書いていきます。

基本は1NCE APIガイドの通りの記述になりますが、注意したいのは認証トークンが1時間しか有効になっていないので、基本的に1日1回だけ動かすようなコードの場合には、毎回コードを取得するように記述してあげる必要があります。

また認証トークンを取得する際のハッシュ値に関しては、1NCE APIガイドにて取得することが可能です。

コードが書けたら、早速実行させてみましょう。

データベースの方を見て、正しくデータが更新されていれば成功です。

スケジューリングさせておく

あとは、このコードを定期的に実行させるように、EC2に設定していきます。

今回はお手軽にcrontabに記述して、毎晩23時59分にファイルを実行させるようにしておきます。

事前に実行権限を正しく設定しておくことを忘れずにしておきましょう。

これでデータベースの準備が全て完了しました。

QuickSightからにRDSをデータセットとして設定する

あとはQuickSightからRDSをデータセットとして登録していくだけです。

QuickSightを開いて、”新しいデータセットを追加”を選択し、RDSをクリックします。

データソース名は適当なものを入力し、データベース名、ユーザー、パスワードは自身の環境にあったものを選択していきます。

QuickSightのサブスクリプションがスタンダードの場合は、パブリックネットワークのものしか選択できませんので注意してください。

あとは作成したテーブル名が選択できるようになっていれば、設定完了です。

実際に可視化されたQuickSight レポート

実際に可視化できるようになったQuickSightでのレポートを確認してみます。

今回は、ICCIDを2枚しか指定していないので、2枚のみが更新されていますが、コードのICCIDリスト部分をDB読込にするなどすれば、全SIMをループでデータ書き換えすることができますね。

最後に

今回は1NCE APIでSIMのデータ残量、SMS残量のデータを取得し、DBに書き込み、そしてそのデータを可視化してみました。

今回の検証した構成以外にも、EC2部分をAWS Lambdaにしてサーバレスにしたり、データ残量を分析してユーザーにアラームを出したりなどすることもできますね。

今回の記事のポイントとしては、以下の点になります。

・1NCE APIを使うことで、データ&SMS残量を一括で取得することができる
・QuickSightなどのBIツールを使って可視化することができる

1NCE(ワンス)SIMカードでは法人ユーザーであれば、どなたでも1枚からWEBで購入が可能で、今回紹介した1NCE SIM管理プラットフォームの機能は、アカウントユーザーであればであれば誰でも無料で試すことができますので、先ずは是非触ってみてください。

▶ 1NCEショップ

本記事はアフィリエイトプログラムによる収益を得ている場合があります