Skip to main content

Ubidots統合 (via Helium)

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

この記事では、SenseCAP T1000 TrackerをHelium LNSを通じてUbidotsに接続する手順を説明します。

執筆者: Juan David Tangarife - Ubidotsチームより

出典

pir

必要条件

  • Ubidotsのアクティブなアカウント
  • SenseCAP T1000 Tracker
  • HeliumコンソールのアクティブなアカウントといくつかのDC
  • Google Play StoreまたはApp StoreをサポートするBluetooth対応の携帯電話

SenseCAP Mateアプリをインストールしてトラッカーを設定する

以下のQRコードをスキャンしてください。Seeed StudioのSenseCAP Mateアプリ公式ダウンロードページに移動します。

pir

インストール後、携帯電話のBluetoothを有効にしてアプリを起動します。アカウントをまだお持ちでない場合は、アプリを使用するために登録が必要です。

その後、トラッカーのボタンを少なくとも3秒間、またはLEDが点滅するまで押し続けます。次に、デバイスのリストからTracker T1000を選択します。

pir

デバイスをタップします:

pir

設定タブに移動し、次にLoRaタブを選択します。そこで、プラットフォームとしてHeliumを選択し、要件に応じて周波数プランを選択します。また、後の手順で必要になるため、Device EUI、APP EUI、およびAPP Keyを必ずコピーしてください。完了したら、送信ボタンをタップして設定を保存します。

pir

トラッカーをHelium LNSに登録する

Heliumコンソールにログインし、「デバイス」セクションに移動して「デバイスを追加」ボタンをクリックします。

pir

デバイス名、LoRaWANの認証情報など、必要なフィールドを入力します。その後、デバイスを保存ボタンをクリックします。

pir

Heliumでデコーダー関数を作成する

次のステップは、生のバイトデータを人間が読める形式にデコードする関数を設定することです。左側のパネルの関数タブに移動し、新しい関数を追加ボタンをクリックして名前を付けます。

pir

Seeed Studioは、このデバイス専用のデコーダーを以下のリポジトリで提供しています。そのデコーダーをテキストフィールドに貼り付け、変更を保存します。

Ubidotsへの統合を作成する

統合セクションに移動し、統合を追加をクリックしてUbidots統合を検索します。

pir

+統合を追加をクリックします。

pir

Ubidotsトークンを該当フィールドに入力し、続行ボタンをクリックして確認ポップアップメッセージを待ちます。その後、統合に名前を付けて統合を追加ボタンをクリックします。

pir

このステップを実行すると、Ubidotsアカウントに新しいHeliumプラグインが作成されます。

Ubidotsへの統合を接続するフローを作成する

フローセクションに移動し、左上のドロップダウンメニューからデバイス、デコーダー関数、および統合を空白エリアにドラッグ&ドロップします。その後、以下のGIFが示すように点をつなぎます。

pir

この例では、デバイスとデコーダー関数の両方が「sensecap-lorawan-tracker」と呼ばれ、統合は「send data to ubidots」と呼ばれています。

Seeed Studioのデコーダーが返すJSONオブジェクトはUbidotsのスキーマと互換性がないため、必要なデータを抽出した後に変換が必要です。
Heliumプラグインのデコーダーセクションに移動し、そこにあるすべてのコードを削除して、以下のコードに置き換えてください:

# ホットスポット情報を有効にするにはTrueに設定
HOTSPOT_INFO_ENABLE = False

def format_payload(args):

messages = args.get("decoded", {}).get("payload", {}).get("data", {}).get("messages", [])
ubidots_payload = {}

error = assert_error(messages[0][0])
if error is not None:
return error

if HOTSPOT_INFO_ENABLE:
hotspot_info = args.get('hotspots', None)
ubidots_payload['SNR'] = hotspot_info[0].get('snr') if hotspot_info is not None else None
ubidots_payload['RSSI'] = hotspot_info[0].get('rssi') if hotspot_info is not None else None
ubidots_payload["port"] = args.get("port", None)
ubidots_payload['Frame Counter'] = args.get('fcnt', None)

for msg in messages:
for sensor in msg:
message_type = sensor.get("type", None)
value = sensor.get("measurementValue")
if message_type == "Latitude" or message_type == "Longitude":
position = ubidots_payload.setdefault("position", {})
position.update({message_type.lower(): value})
continue
elif message_type == "Timestamp":
ubidots_payload["timestamp"] = value
continue
ubidots_payload[message_type] = value

print(ubidots_payload)
return ubidots_payload


def assert_error(data : dict):
if "error" in data:
return {"ERROR" : { "value" : data["errorCode"], "context" : { "status" : data["error"]}}}
return None

すべてが正しく接続されていれば、Ubidots 上で新しく作成されたデバイスに以下のような画面が表示されるはずです。

pir

Loading Comments...