SORACOM LTE-M Button for Enterprise (白ボタン) と SORACOM Beam の組み合わせがうまくいかないときのトラブルシューティング


はじめに

白ボタンでは UDP でSORACOM へ投げるしコンソール接続などができないため、SORACOM Beam での転送がうまくいかなかったときにどこで問題が起こっているのかを切り分けるのが難しいです。今回は、SORACOM Harvest を使ってトラブルシューティングしてみました。
なお、設定が間違っているときとかは、エラーログ機能で確認ができます。

白ボタン?な方はこちら
https://soracom.jp/products/gadgets/
https://dev.soracom.io/jp/enterprise_button/

トラブルのシナリオ

白ボタンと SORACOM Beam を連携してみたが、ボタンをクリックしてもLED が赤くなる。しかしどこに原因があるのかがわからない。

(失敗例) SORACOM の公式チュートリアル に従って PostBin にPOST しようとしたが、うっかり URL を 1 文字漏らしてコピペしてしまった

トラブルシューティング手順

  1. SORACOM Harvest を有効にしてボタンをクリックし、SORACOM Harvest にデータが格納できているかを確認する
  2. SORACOM Harvest に格納されたデータを curl などで SORACOM Beam の転送先に送り、エラーなどが返らないかを確認する

トラブルシューティングのフローチャート

1. SORACOM Harvest を有効にしてボタンをクリックし、SORACOM Harvest にデータが格納できているかを確認する

白ボタンが所属しているグループで Harvest を有効にします。

この後、ボタンをクリックします。ここで LED に緑色になるのは Unified Endpoint 経由で Harvest への送信には成功しているからです。Harvest を無効にすると Beam だけに送られるためまた赤色になります。

次に、Harvest にデータが格納されているかを確認します。下のように表示されていれば、少なくとも Harvest にはデータが送られているのでネットワークなどは問題ないといえます。

なお、もし下のようになっていたら、バイナリパーサーが有効になっていないので有効にしましょう。

2. SORACOM Harvest に格納されたデータを curl などで SORACOM Beam の転送先に送る

先ほど Harvest で格納を確認した json 形式のデータをそのまま手元の PC から curl で送ってみます。もしポート番号やヘッダを別途設定している場合はよしなにつけてください。

$ curl -XPOST -H 'Content-Type:application/json' -d '{"clickType":1,"clickTypeName":"SINGLE","batteryLevel":1,"binaryParserEnabled":true}' https://postb.in/1561708098714-987965611973
404 - Not Found

今回の場合、PostBin の URL をコピペミスしていたのでここで 404 が返り、そもそもの URL が怪しいのかも、という切り分けができます。以下のように、URL を直せば正常なレスポンスが返ってきます。もし詳細なログを見たければ curl -v オプションをつけるのも良いです。

curl -XPOST -H 'Content-Type:application/json' -d '{"clickType":1,"clickTypeName":"SINGLE","batteryLevel":1,"binaryParserEnabled":true}' https://postb.in/1561708098714-9879656119737
1561709365768-3901113041210

もし curl でうまくいくが引き続き Beam では失敗するようなことがあれば、たとえばアクセス認証などを疑うことが考えられます。少なくとも URL が正しく対向のサーバには到達しているので、対向のサーバ側のエラーログを見るというトラブルシューティングが考えられる。