SORACOM Air は、ユーザーコンソールでのブラウザによる制御以外に、REST APIで制御することが可能です。
公式SDK として Ruby 用が提供されていますが、Python のほうが慣れているので、Python用SDK を拡張してみました。
Ruby用SDK をできるだけそのままの形で Python 用に実装しています。
% ipython3 Python 3.4.3 (default, Nov 19 2015, 13:59:03) Type "copyright", "credits" or "license" for more information. IPython 3.2.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: from soracom import api_client In [2]: api=api_client.SoracomAPI() In [3]: api.list_subscribers() Out[3]: [{'apn': 'soracom.io', 'createdAt': 1448608559047, 'createdTime': 1448608559047, 'expiredAt': None, 'expiryTime': None, 'groupId': 'ffffffff-0000-1111-2222-333344445555', 'imsi': '440000000000000', 'ipAddress': '10.xxx.xxx.xxx', 'lastModifiedAt': 1448845964414, 'lastModifiedTime': 1448845964414, 'moduleType': 'nano', 'msisdn': '810000000000', 'operatorId': 'OPxxxxxxxxxx', 'plan': 0, 'sessionStatus': {'dnsServers': None, 'imei': None, 'lastUpdatedAt': 1448845964414, 'location': None, 'online': False, 'ueIpAddress': None}, 'speedClass': 's1.slow', 'status': 'active', 'tags': {'name': 'SORACOM SIM_1'}, 'terminationEnabled': False, 'type': 's1.slow'}] In [4]: api.get_air_usage("440000000000000") Out[4]: [{'dataTrafficStatsMap': {'s1.slow': {'downloadByteSizeTotal': 90, 'downloadPacketSizeTotal': 1, 'uploadByteSizeTotal': 126, 'uploadPacketSizeTotal': 1}}, 'date': '2015-11-30T01:13:12.487', 'unixtime': 1448845992}] In [5]: api.list_groups() Out[5]: [{'configuration': {}, 'createdAt': 1448608557355, 'createdTime': 1448608557355, 'groupId': 'ffffffff-1111-2222-3333-444455556666', 'lastModifiedAt': 1448608557355, 'lastModifiedTime': 1448608557355, 'operatorId': 'OPxxxxxxxxxx', 'tags': {'name': 'IoT'}}]
SORACOM SDK for Ruby にあるサンプルコードのPython版です。
#! /usr/bin/env python3 # -*- coding: utf-8 -*- from soracom.api_client import SoracomAPI, SpeedClass # SORACOM APIアクセス用クライアントの初期化方法 # 1. client = soracom.api_client.SoracomAPI(email='登録メールアドレス', # password='パスワード') # 2. client = soracom.api_client.SoracomAPI() # (環境変数 SORACOM_EMAIL & SORACOM_PASSWORD を参照) def main(): client = SoracomAPI() # サブスクライバー(SIM)の一覧を取得 sims = client.list_subscribers() print("found {} SIMs.".format(len(sims))) # 操作対象のIMSI配列を用意 imsis = [sim['imsi'] for sim in sims] print("change plan to {}".format(SpeedClass.s1.fast)) # プラン変更のためのAPIをコールする res = client.update_subscriber_speed_class(imsis, SpeedClass.s1.fast) print("done") if __name__ == "__main__": main()
実行例
% python3 changeSpeedClass.py found 1 SIM(s). change plan to s1.fast done