Help us understand the problem. What is going on with this article?

Sigfox Callback プログラミング

概要

SigfoxのCallbackを用いたプログラミングの仕方について説明します。

Sigfox Callbacksとは

Sigfoxクラウドには、Callbacksと呼ばれる機能が提供されています。このCallback機能とは、Sigfoxデバイスから送信され、Sigfoxクラウドに届いたデータ(メッセージ)をWebサーバーに転送する機能です。また、Callback応答機能を使う事でデータ(8バイト)をSigfoxデバイスに送信することができます。
スクリーンショット 2019-12-02 18.22.47.png

使用する機材

  1. Sigfox Shield for Arduino V2S【UNASHIELD-V2S】

image.png

※SigfoxデバイスはSigfoxクラウドに登録されているものとします。

2.Aruduino Uno R3(Arduino IDEのバージョン 1.8.10)

使用するライブラリ

①今回はunabiz-arduinoライブラリを使用しています。下記URLにライブラリがありますのでダウンロードしてください。
https://github.com/UnaBiz/unabiz-arduino
[Clone or Download]から[Download ZIP]をクリックするとダウンロードを開始します。

② [unabiz-arduino]ライブラリのインストール方法です。
ZIP形式のライブラリのダウンロードができたらarduino IDEを開き、ダウンロードしたライブラリをインストールします。
[スケッチ]_[ライブラリのインクルード]から[.ZIP形式のライブラリをインストール…]をクリックし、ダウンロードしたライブラリを指定します。

Sigfoxデバイス側のプログラム

UnaShieldでSigfoxクラウドへデータを送信しcallback機能で、Webサーバ側で受け取りUnaShield側で受信するプログラムです。

downlink.ino
#include "SIGFOX.h"
static const String device = "g88pi";
static const bool useEmulator = true;
static const bool echo = true;
static const Country country = COUNTRY_JP;

static UnaShieldV2S transceiver(country, useEmulator, device, echo);
static String response; 

void setup() {
    Serial.begin(9600);
    if (!transceiver.begin())stop(F("Unable to init SIGFOX module, may be missing"));
    transceiver.sendMessageAndGetResponse("0123456789012", response); //"0123456789012"送りたい内容を書く
    Serial.println(response);//Callbackが成功したら表示される
}

void loop() {  
}

Callback応答方法
下りデータは、Callbackへの応答として、JSONフォーマットでデバイスIDと下りデータ(8バイト)を記述します。
スクリーンショット 2019-12-02 18.27.03.png

WebサーバーのPHPプログラム

下りデータは受信させたい8バイトを指定します。今回は”100000000000”を指定しました。

:callback.php
<?php 
$_POST = json_decode(file_get_contents('php://input'), true); 
$_id = $_POST["deviceId"]; 
$_rssi = $_POST["RSSI"]; 
$_rssiHex = sprintf("%'.04x", $_rssi & 0xffff);
echo "{";
echo "\"". $_id ."\":{\"downlinkData\":\"100000000000". $_rssiHex . "\"}";
echo "}";
header("HTTP/1.0 200 OK");
header("Content-Type: application/json");
?>

SigfoxクラウドのCallback設定

次にSigfoxクラウドのCallback設定です。
①DEVICE TYPEタブをクリックし、次にCALLBACKSをクリックします。
スクリーンショット 2019-12-03 0.22.46.png
②以下が表示されるので右のNewをクリックします。
スクリーンショット 2019-12-03 0.31.25.png
③以下からCustom callbackをクリックします。
スクリーンショット 2019-12-03 0.33.14.png

④ [Type]はDATA、BIDIR、[Channel]はURLを選んでください。[Url pattern]はサーバーに置いてある実行したいプログラム(callback.php)のURLを入れてください、[Use HTTP Method]はPOST、[Body]は{"deviceId":"{device}","RSSI":"{rssi}"}を入力してください。入力できたら下にあるOKを押してください。
スクリーンショット 2019-12-03 23.57.50.png
⑤下りCallbackを有効にします。Downlinkをクリックしてください。
スクリーンショット 2019-11-30 22.33.27.png
これでSigfoxクラウドの設定が完了しました。

arduinoでdownlink.inoを実行すると100000000000が表示されます

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした