SORACOMのAir SIMの帯域をRubyスクリプトから変更する

概要

ソラコムAir SIMの帯域変更をRubyスクリプトから試した。

SORACOM SDK for Rubyのインストール

$ gem install soracom

Clientの準備

require 'soracom'

client = Soracom::Client.new(email: 'YOUR_EMAIL_ADDRESS', password: 'YOUR_PASSWORD')

emailとpasswordは、それぞれ環境変数SORACOM_EMAILとSORACOM_PASSWORDを定義することでSDKが自動で読み込む。その場合は以下のようになる。

require 'soracom'

client = Soracom::Client.new

SIM一覧取得

require 'soracom'
require 'pp'

client = Soracom::Client.new(email: 'YOUR_EMAIL_ADDRESS', password: 'YOUR_PASSWORD')

# 管理しているSIM一覧を取得
sims = client.list_subscribers

pp sims

実行すると以下のような結果を得れる。

$ ruby soracom.rb
[{"imsi"=>"123456789",
  "msisdn"=>"0987654321",
  "ipAddress"=>"192.168.1.1",
  "apn"=>"soracom.io",
  "type"=>"s1.fast",
  "groupId"=>"12345-6789-abcd-efghijk",
  "createdAt"=>12345,
  "lastModifiedAt"=>6789abc,
  "expiredAt"=>nil,
  "terminationEnabled"=>false,
  "status"=>"active",
  "tags"=>{"name"=>"example"},
  "sessionStatus"=>
   {"lastUpdatedAt"=>123456,
    "imei"=>"123456789",
    "location"=>nil,
    "ueIpAddress"=>"192.168.1.1",
    "dnsServers"=>["192.168.1.1", "192.168.1.1"],
    "online"=>true},
  "speedClass"=>"s1.fast",
  "moduleType"=>"nano",
  "plan"=>0,
  "expiryTime"=>nil,
  "operatorId"=>"1234567",
  "createdTime"=> 12345,
  "lastModifiedTime"=> 6789abc}]

IMSI識別番号の取得

SIM個別に操作するためにIMSIを取得する。

require 'soracom'
require 'pp'

client = Soracom::Client.new(email: 'YOUR_EMAIL_ADDRESS', password: 'YOUR_PASSWORD')

# 管理しているSIM一覧を取得
sims = client.list_subscribers

# IMSI識別番号の取得
imsis = sims.map { |sim| sim['imsi'] }

pp imsis

実行するとIMSIの配列を得られる。

$ ruby soracom.rb
["123456789"]

SIMの通信帯域を制御

SORACOMには4つの速度クラスがあり、それらをユーザーコンソールから変更できる。今回はs1.fastからs1.minimumに変更する。

require 'soracom'

client = Soracom::Client.new(email: 'YOUR_EMAIL_ADDRESS', password: 'YOUR_PASSWORD')

# SIM一覧を取得
sims = client.list_subscribers

p sims.map { |sim| sim['speedClass'] }

# IMSI識別番号の取得
imsis = sims.map { |sim| sim['imsi'] }

client.update_subscriber_speed_class(imsis, 's1.minimum')

# SIMの情報を再取得
p client.list_subscribers.map { |sim| sim['speedClass'] }

実行すると速度クラスが変更され、帯域を制御できた。

$ ruby soracom.rb
["s1.fast"]
["s1.minimum"]

参考