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"]