6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SORACOM LTE-M Button for Enterpriseを使ってみた

Last updated at Posted at 2019-04-14

SORACOM LTE-M Button for Enterpriseを使ってみた

2019年4月10日に発表されたSORACOM LTE-M Button for Enterpriseを一個からでも買えるようになったということで、早速、購入しました。俗にいう、あのボタンです。

IMG_1891.jpg

届いたらやること

4月10日の昼に注文して、東京のアジトに届いたのが11日の昼でした。
これを沖縄のアジトにすると思うと、やっぱ内地はいいですね。
SORACOM LTE-M Button for AWSとは、違って、SORACOM CONSOLEでの扱いは、SIMになるので、そこだけ注意ですね。
また、もう届いたのに、SIM管理に出てこないなあとなるので、まずは、受け取り確認をしましょう!
注文履歴から、『受け取り確認』ボタンを押下すればOKです。

190412-0001.png

SIM管理で追加されていることが確認ができればOKです。

まだ、ボタンを押していないので、状態が『準備完了』になっていますね。

190412-0002.png

とりあえず、何も考えず、電池を入れていきなりボタンを押してみると、最後赤ランプ点灯して、エラーになりますが、状態が使用中に変化して、有効になったことが確認できました。

190412-0003.png

SIMグループの設定

SIMをあのボタン用のグループに所属させましょう!(自分の場合は、Buttonです)

SORACOM LTE-M Button for EnterpriseはUDPでバイナリで情報を送信する仕様のようなので、SORACOM Air for Cellularの設定で

バイナリパーサーの設定が必要になります。内容は。『@button』で指定します。

190412-0004.png

SORACOM Harvest設定(必須ではない)

とりあえず、ボタンの動作を確認するために使う感じですね。これはただ単にONにすればOK

190412-0005.png

ボタンの押し方を変えて取得したデータの状況!

190412-0006.png

こんな感じで取れます。課金もされるので、Harvestの設定はOFFにしておきましょう。

SORACOM Beam設定(UDP→HTTP/HTTPS)

SORACOM LTE-M Button for Enterpriseを使うのは、AWSを経由しないで、SORACOMから、インターネット上の任意のサーバに通知したいということなので、SORACOM Beamを使って、行います。Buttonデバイスは、UDPで通信するようなので、UDP→HTTP/HTTPSを使います。

ただ単に、インターネット上のサーバに通知したいだけなら、ヘッダ操作の部分は設定しなくてもOKです。

190414-0001.png

署名ヘッダを使う理由

SORACOM beamの設定で、単に、あるURLを呼び出すのであれば、それでもいいのかも知れませんが、自分の場合は、Twilioを使って、電話をかけるという処理を行います。電話かけるということはそれなりの費用がかかるし、インターネット上から嫌がらせされても嫌なので、SORACOM経由でアクセス来たことを確認するために署名ヘッダを付与する設定にしています。

署名ヘッダをどうやって解析して認証するのか?をPHPのコードで書いてみました。
debug.txtにログ出力していますが、不要の場合は削除しましょう。

debug.php
<?php
$imsi = $_SERVER['HTTP_X_SORACOM_IMSI'];
$timestamp = $_SERVER['HTTP_X_SORACOM_TIMESTAMP'];
$sig = $_SERVER['HTTP_X_SORACOM_SIGNATURE'];

file_put_contents("debug.txt","IMESI=" . $imsi);
file_put_contents("debug.txt",",TIMESTAMP=" . $timestamp, FILE_APPEND);
file_put_contents("debug.txt",",SIG=" . $sig, FILE_APPEND);

$secret = "secret"; // これが、事前共有鍵なので、SORACOM CONCOLEの内容と合わせてね。
$original_string = $secret . "x-soracom-imsi=" . $imsi . "x-soracom-timestamp=" . $timestamp;
$hased_string = hash('sha256', $original_string);

$local_timestamp = (time() * 1000);
$a = abs($local_timestamp - $timestamp);

file_put_contents("debug.txt",",a=" . $a , FILE_APPEND);

// タイムスタンプが2秒以内であるかチェック
if(($a < 2000) && ($a >= 0))
{
    if(strcmp($sig, $hased_string) == 0)
    {
        file_put_contents("debug.txt",",OK", FILE_APPEND);
        // 例えば、Twilio経由で電話をかける処理を書きましょう
    }
    else{
        file_put_contents("debug.txt",",NG", FILE_APPEND);
        print("NG");
    }
} else {
    file_put_contents("debug.txt",",TNG", FILE_APPEND);
    print("TNG");
}
?>

NGは、署名が一致しなかった場合で、TNGは、タイムスタンプが古い場合に出力されます。

6
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?