Sigfox Shield for Arduino について
Arduino IDE を使って Sigfox 回線を使った開発ができるシールドです。
送信するペイロードやタイミングなど、自由に開発したい場合、現時点では最も簡単な(安くて早い)選択肢です。
製造元 UnaBiz 正式名称 UnaShield
UnaBiz: https://www.unabiz.com/
アジア(シンガポール、台湾)で Sigfox サービスを展開する事業者です。日本での京セラコミュニケーションシステムに相当。
UnaShild: https://unabiz.github.io/unashield/
日本の事業者ではないですが、日本で注文すると、ちゃんと RCZ3
のシールドが届きました。
日本での卸元 京セラコミュニケーションシステム (KCCS)
こちらからは購入できません。「4社から購入可能」と案内されていますので、いずれかから購入しましょう。
取扱説明書のダウンロードは可能です。 https://www.kccs.co.jp/sigfox/download/manual-sigfox-shield-for-arduino.pdf
Shield の購入
販売店比較 買うならマルツ
いずれも、1年間のSigfox回線利用権が含まれています。
ソラコムを使いたい信者場合は一択ですが、それ以外は同じ製品なので価格で選んで構いません。
どれもKCCSと取引があるので、ちゃんとした代理店です。
販売店 | URL | 価格 | 送料 | 2年目以降について | 備考 |
---|---|---|---|---|---|
ソラコム | https://soracom.jp/products/sigfox/sigfox_shield_for_arduino/ | 6,480円 (税抜き) | 907円 (税込) | 1,440円/1年 (税抜き) | Sigfox クラウド (backend.sigfox.com) 利用不可 |
スイッチサイエンス | https://www.switch-science.com/catalog/3354/ | 6,026円 (税込) |
500円 (10,000円以上で無料) |
1000円ほど | 販売ページの資料が充実 |
共立電子産業 | http://eleshop.jp/shop/g/gHAR311/ | 6,026円 (税込) | ネコポス 280円 (7,500円(税込)以上無料) |
情報を確認中 | |
マルツエレック | https://www.marutsu.co.jp/pc/i/952284/ | 5,480円 (税抜) | 3,000円以上で 無料 | Sigfox契約が別途必要 |
公平に比較した結果、私はマルツから購入しました。
Sigfox クラウドへの登録 (activate)
まずは Sigfox Cloud への登録が必要です。
KCCSなどから取扱説明書をダウンロードして、それに従って作業しましょう。
https://backend.sigfox.com からの登録ではないようです。
登録ページ https://buy.sigfox.com/activate
完了後、 Sigfox クラウド で契約 (contract) 内容を確認すると、上り140回/日、下り4回/日が可能な、一番回数の多い契約となっていました。
サンプルスケッチの実行
こちらも、ダウンロードした取扱説明書に従って作業します。
Arduino library: UnaBiz/unabiz-arduino - GitHub
説明書で紹介しているサンプルはこちら
スケッチを何も変更せずにコンパイル・書き込みを行っただけで、Sigfoxクラウドにデータが入ってくることが確認できました。
上りペイロードは12バイトなので、16進(4bits)の場合 $12 \times 8 \div 4 = 24$ すなわち24文字となります。
サンプルスケッチのままですと、10回データを送信したら終了するので、確認ができたら Arduino の電源を落としましょう。
Sigfox Cloud REST API
REST API のドキュメントを参照するにも API ACCESS
の発行が必要なので、 https://qiita.com/ghibi/items/b9cb1d26ccff26a427a3 を参考に API documentation
を確認しておきましょう。
(注意)利用権限のない API はドキュメントも表示されません。
API仕様はパブリックになっていませんので、 @ghibi の記事と同程度の情報量にとどめておきます。
メッセージ取得 (Devices API)
Devices API
の Messages sent by a device
を利用して、特定の1端末のメッセージを取得します。
同じデバイスタイプのメッセージをまとめて取得する API もありますが、そちらはまた後日。
以下、固有の情報は伏字 *
にして curl
で取得してみました。
time
(Unix Epoch) フィールドをキーとして使えるので、必要なメッセージを絞り込む場合に使いましょう。
(since
, before
, limit
, offset
というパラメーターが使えることも、既に https://github.com/mjuenema/python-sigfox-backend-api にてパブリックになっています)
$ curl -su ****:**** https://backend.sigfox.com/api/devices/******/messages?since=1538043230\&before=1538043260\&limit=2 | jq .data[]
{
"device": "******",
"time": 1538043257,
"data": "920e5a00b0512a0194592000",
"seqNumber": 12,
"rinfos": [
# 省略
],
"nbFrames": 3,
"operator": "SIGFOX_Japan_KCCS",
"country": "JPN",
"snr": "20.44",
"linkQuality": "EXCELLENT",
"groupId": "****"
}
{
"device": "******",
"time": 1538043232,
"data": "920e5000b0512d0194592000",
"seqNumber": 11,
"rinfos": [
# 省略
],
"nbFrames": 3,
"operator": "SIGFOX_Japan_KCCS",
"country": "JPN",
"snr": "20.85",
"linkQuality": "EXCELLENT",
"groupId": "****"
}
おわりに
商用開発では callback を利用すべきですが、手早く確認・検証する場合は REST API を利用すると思います。
time
をキーとして絞り込みができるので、効率よくメッセージを取得することも可能です。
Sigfoxクラウドに関してパブリックな情報が少なく、私もなかなか購入に踏み切れずにいました。
本記事の情報が、Sigfoxを新たに試してみるきっかけとなれば幸いです。