ユーザ用ツール

サイト用ツール


mae3xx_tips:soracom:use_soracom_api:start

SORACOM API を使う

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版です。

changeSpeedClass.py
#! /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
mae3xx_tips/soracom/use_soracom_api/start.txt · 最終更新: 2015/12/08 16:23 by admin