前書き

IIJmioの格安SIMで高速通信のオンオフを自動化できます。トリガーとしてMacroDroidが提供しているものを利用できます。

免責事項

自己責任でお願いします。何があっても誰も責任を負いません。

準備するデータ

  • 高速通信ON/OFF操作する対象のSIMカードサービスコード
  • デベロッパID
  • アクセストークン

SIMカードサービスコード

hdo/hdu/hdx から始まるコードです。それぞれ タイプD/タイプA/フルMVNO版eSIM です。IIJmioの契約者ページにログインして探してみてください。hdcから始まるコードは違います。
私が確認したタイミングでは、ログイン→「契約内容の確認」→「同意して本ホームページ上で表示します(HTML)」→対象のSIMカードの「SIMカード情報」に「SIMカードのサービスコード」に記述ありました。

デベロッパID

IIJmioクーポンスイッチAPI https://www.iijmio.jp/hdd/coupon/mioponapi.html のページから、デベロッパコンソールにログインしてください。

IIJmioデベロッパコンソールに「デベロッパID」が表示されます。

アクセストークン

アプリ1のアプリ名を分かりやすい名前にし、リダイレクトURIを「http://localhost/」と入力します。

このURLの末尾に前項で取得したデベロッパIDを貼り付けて、Webブラウザでアクセスします。

https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&state=example_state&redirect_uri=http%3A%2F%2Flocalhost%2F&client_id=

ログインして「許可する」を選択します。

接続できない旨のエラーメッセージを表示が表示されたら、その画面のURLで、"access_token="から"&"までの間の文字列がアクセストークンになります。

http://localhost/#access_token=[この部分]&state=example_state&token_type=Bearer&expires_in=7776000

MacroDroid

トリガーと条件は各自で切り替えたいタイミングと条件を設定してください。
なお、1分未満で切り替えることはできないので、十分に時間が空くように工夫してください。
高速通信ONとOFFで2つのマクロを別々に作ります。コンテントボディだけ異なります。

共通(高速通信ON/OFF)

アクション→「アプリ」→「HTTPリクエスト」

設定

リクエストメソッド:「PUT」
URLを入力:「https://api.iijmio.jp/mobile/d/v2/coupon/」
完了するまで待機:チェック入れる
すべての照明を許可:チェックを外す
リダイレクトを許容する:チェックを外す
タイムアウト:30
認証を使用する:チェックを外す
レスポンス:HTTPレスポンスを変数(文字列)に代入
ローカル変数:「IijmioApiResult」

アクションの設定タブ

クエリーパラメーター

(パラメーター設定なし)

ヘッダーパラメーター

パラメータを2つ追加します。右下の「+」をタップ。

パラメータ名:「X-IIJmio-Developer」
値:デベロッパID

パラメータ名:「X-IIJmio-Authorization」
値:アクセストークン

アクションのヘッダーパラメータータブ

高速通信OFF

コンテントボディ

コンテントタイプ(MIMEタイプ):「application/json」
コンテントボディ:「文字」
文字列データとして、SIMカードのサービスコードの頭文字別に次のデータを入力

hdo
{ "couponInfo" : [ { "hdoInfo" : [ { "hdoServiceCode": "ここにSIMカードのサービスコード", "couponUse" : false } ], "hduInfo" : [ ], "hdxInfo" : [ ] } ] }
hdu
{ "couponInfo" : [ { "hdoInfo" : [ ], "hduInfo" : [ { "hduServiceCode": "ここにSIMカードのサービスコード", "couponUse" : false } ], "hdxInfo" : [ ] } ] }
hdx
{ "couponInfo" : [ { "hdoInfo" : [ ], "hduInfo" : [ ], "hdxInfo" : [ { "hdxServiceCode": "ここにSIMカードのサービスコード", "couponUse" : false } ] } ] }
アクションのコンテントボディ(フルMVNO版eSIMの高速通信OFF)

高速通信ON

コンテントボディ

コンテントタイプ(MIMEタイプ):「application/json」
コンテントボディ:「文字」
文字列データとして、SIMカードのサービスコードの頭文字別に次のデータを入力

hdo
{ "couponInfo" : [ { "hdoInfo" : [ { "hdoServiceCode": "ここにSIMカードのサービスコード", "couponUse" : true } ], "hduInfo" : [ ], "hdxInfo" : [ ] } ] }
hdu
{ "couponInfo" : [ { "hdoInfo" : [ ], "hduInfo" : [ { "hduServiceCode": "ここにSIMカードのサービスコード", "couponUse" : true } ], "hdxInfo" : [ ] } ] }
hdx
{ "couponInfo" : [ { "hdoInfo" : [ ], "hduInfo" : [ ], "hdxInfo" : [ { "hdxServiceCode": "ここにSIMカードのサービスコード", "couponUse" : true } ] } ] }

エラーの通知

高速通信の切り替えに失敗したときに、通知を出すことができます。

アクション→条件分岐 [If]→条件の「+」→MacroDroid固有→変数→IijmioApiResult→「!=」

{ "returnCode" : "OK" }

条件分岐を開始~条件分岐を終了の間は、通信が失敗したときに実行されますので、そこにお好みの通知を行うアクションを登録します。「IijmioApiResult」変数にサーバーからの応答が入ってます。

私が使用している例を示します。

高速通信切り替え失敗時に通知を表示するアクションの例

トリガーのヒント

私の場合、家にいないときは高速通信ON、家にいるときは高速通信OFFになるようにトリガーを設定しています。これは、家にいてWi-Fiから切断されたときに高速通信量が消費されるのを防ぐためです。

これを実現するために、トリガーとして 位置情報→ジオフェンス・トリガー を使用しています。自宅をゾーンとして設定し、高速通信をONにするトリガーは「指定エリアに入った時」、高速通信をOFFにするトリガーは「指定エリアに入った時」としています。

高速通信をOFFにするマクロのトリガーであるジオフェンスオプション
高速通信をOFFにするマクロのトリガー