Arduino
WioLTE

Wio LTEでSMSを受信してみる(mineo au SIM)

Wio LTEでSMSを受信してみる(mineo au SIM)

前回の記事の続きです。

続報(2017/11/7)

dev branchだけど、SMS受信電番対応したよって連絡あったので、試してみました。

test.ino
char mes[256];
char number[256];

if(Wio.ReceiveSMS(mes,sizeof(mes),number,sizeof(number)) > 0)
{
  SerialUSB.print("SMS:");
  SerialUSB.println(number);
  SerialUSB.println(mes);
  Wio.DeleteReceivedSMS();
}

で、問題なく、SMS送信者の電番を取得することができました!
対応ありがとうございます!

環境(2017/10/27)

MacBook 12(2017)
MacOS High Sierra(10.13)
Arduino IDE 1.8.5
Wio LTE Library v1.0.1
Wio LTE Japan Version (SORACOM CONSOLE経由で購入) v1.0
mineo au MVNO 1 SIM(VoLTE専用)
mineo au 6 SIM(黒SIM)

結論

SMS送信は、mineo Docomoも音声SIMからiPhone 8で送信しています。
VoLTE専用SIMは、SMS受信できるけど、黒SIMの場合は、残念ながらSMSを受信できませんでした。
ReceiveSMS()関数は、古いSMSのものから、取り出してくれるので、DeleteReceivedSMS()を呼ばないと、新しいSMSを取り出せないのでご注意を!

考察

黒いSIMは、SMSを3G経由で受信する仕様なので、LTE Onlyのデバイスでは受信できないのかもね。
VoLTE専用は、そもそも、LTE網で、SMSも受信するので、OKということなんでしょう!きっと!

検証プログラム

test.ino
#include <WioLTEforArduino.h>
#include <limits.h>
#include <stdio.h>

WioLTE Wio;

void setup() {
  // put your setup code here, to run once:
  delay(200);

  SerialUSB.println("");
  SerialUSB.println("--- START ---------------------------------------------------");

  SerialUSB.println("### I/O Initialize.");
  Wio.Init();

  SerialUSB.println("### Power supply ON.");
  Wio.PowerSupplyLTE(true);
  delay(5000);

  SerialUSB.println("### Turn on or reset.");
  if (!Wio.TurnOnOrReset()) {
    SerialUSB.println("### ERROR! ###");
    return;
  }

  delay(3000);

  if(Wio.Activate("mineo.jp","mineo@k-opti.com","mineo") == true) {
    SerialUSB.println("Activate is True");
  } else {
    SerialUSB.println("Activate is False");
  }

  delay(3000);

  SerialUSB.println("Loop Start");
}

void loop() {
  char num[20];

  if(Wio.GetPhoneNumber(num,sizeof(num)) > 0) {
    SerialUSB.println(num);
  }

  int rssi = Wio.GetReceivedSignalStrength();
  if (rssi == INT_MIN) {
    SerialUSB.println("### ERROR! ###");
    goto err;
  }

  SerialUSB.print("RSSI:");
  SerialUSB.print(rssi);
  SerialUSB.println("");

  char mes[256];

  if(Wio.ReceiveSMS(mes,sizeof(mes)) > 0)
  {
    SerialUSB.print("SMS:");
    SerialUSB.println(mes);
    Wio.DeleteReceivedSMS();
  }

err:  
  delay(5000);
}

以上、ご参考までに