Skip to main content

SenseCAP M2 マルチプラットフォームゲートウェイ LNS 設定

note

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

ゲートウェイ設定

Web UI を使用してゲートウェイを設定します。クイックスタートを確認して Luci にログインしてください。

チャネルプラン設定

LoRa > Channel Plan に移動します。

pir

地域と周波数プランを選択します。

pir

設定後、Save&Apply をクリックします。

ローカルネットワークサーバー設定

LoRa > LoRa Network に移動します。

pir

モードを Local Network Server に設定し、MQTT 情報(Broker Host/Port/User/Password)を追加します。他のパラメータはデフォルト値のままにしておくことができます。

pir

設定を適用するには Save&Apply をクリックします。

注意

プロセスの開始には約1分かかります。その後、GUI 設定にアクセスできます。

ChirpStack GUI 設定

http://localhost:8080 から ChirpStack GUI にログインします。

pir

デフォルトのアカウントとパスワード: admin

pir

その後、ダッシュボードページが表示されます。

pir

地域を確認する

Network Server > Regions に移動します。

Region ID が表示されるはずです。それをクリックして情報を確認します。前のステップで設定した内容と一致している必要があります。

pir

pir

デバイスプロファイルを追加する

Tenant > Device Profiles に移動し、Add Profile をクリックします。

pir

MAC バージョン: LoRaWAN 1.0.3
地域パラメータのリビジョン: A
ADR アルゴリズム: デフォルトの ADR アルゴリズム (LoRa のみ)
期待されるアップリンク間隔: カスタマイズ可能、デフォルトは 3600 秒

pir

Codec に移動し、JavaScript functions を選択します。SenseCAP Decoder for TTN をコピーして提出します。

pir

ゲートウェイを追加する

Gateway に移動し、Add Gateway をクリックします。

pir

名前とゲートウェイ ID を定義します(ID をランダムに生成することもできます)。その後、提出します。

pir

デバイスを追加する

Tenant > Application に移動し、Add Application をクリックします。

アプリケーションに名前を付けて提出します。

pir

アプリケーションに移動し、Add device をクリックします。

pir

デバイス EUI を貼り付け、前に追加したデバイスプロファイルを選択して提出します。

pir

アプリケーションキーを貼り付けて提出します。

pir

デバイスのステータスを確認する

デバイスの Events を確認し、デバイスがネットワークに参加した際のジョインパケットを取得します。

pir

パケットの詳細も確認できます。

pir

統合

この章はクラウドサービス開発のためのものであり、以下のガイドラインは参考用です。

MQTT

トピック

MQTT 統合は、イベントタイプで文書化されているすべてのイベントを公開します。

デフォルトのイベントトピックは以下の通りです:

application/APPLICATION_ID/device/DEV_EUI/event/EVENT

詳細については、イベントタイプを確認してください。

アプリケーション ID はアプリケーションタブで確認できます:

pir

  • イベントタイプ
upアップリンクイベント
statusマージンとバッテリーステータス
joinデバイス参加イベント
ack確認済みダウンリンク (n)ack
txackダウンリンク送信 ack
logログ(またはエラー)イベント
location位置情報イベント
integration統合イベント
注意

+ はすべてのメッセージを受信することを意味します。

:

  • 特定のゲートウェイ下のすべてのデバイスからアップリンクメッセージを受信するには:
gateway/<GATEWAY_EUI>/device/+/event/up
  • アプリケーション下のすべてのデバイスからすべてのメッセージを受信するには:
application/+/device/+/event/+
  • すべてのゲートウェイからすべてのデバイスメッセージを受信するには:
gateway/+/device/+/event/+

gatewayid を確認してゲートウェイを区別できます。

pir

ペイロード

object.valid が true の場合、データ解析が成功したことを意味します。その後、object.messages を走査して必要なデータタイプを抽出できます。

pir

1) SenseCAP LoRaWAN S210X センサーのアップイベントペイロード例の説明:

pir

  • upload\_battery: バッテリー
  • upload\_interval: アップロード間隔、単位:秒
  • upload\_version: ハードウェア/ファームウェアバージョン
  • report\_telemetry: 測定値

‘report_telemetry’ メッセージ内の measurementId については、SenseCAP Measurement ID を確認してください。

pir

1) SenseCAP データロガーのアップイベントペイロード例の説明:

pir

‘report_telemetry’ メッセージ内の measurementId については、SenseCAP Measurement ID を確認してください。

HTTP

HTTP タブで + をクリックして新しい HTTP 統合を追加します。

LNS は設定された URL に POST メッセージを送信します。

pir

URL 情報を送信してください。

注意

https ではなく http のみをサポートします。

pir

HTTP 統合は、設定されたイベントエンドポイントまたはエンドポイント(複数の URL をカンマ区切りで設定可能)に POST リクエストを送信します。event URL クエリパラメータはイベントの種類を示します。

HTTP 統合は、イベントタイプで文書化されているすべてのイベントを公開します。

:

main.py
from http.server import HTTPServer, BaseHTTPRequestHandler 

from urllib.parse import urlparse, parse\_qs

from chirpstack\_api import integration

from google.protobuf.json\_format import Parse

class Handler(BaseHTTPRequestHandler):

\# True - JSON マーシャラー

\# False - Protobuf マーシャラー(バイナリ)

json = False

def do\_POST(self):

self.send\_response(200)

self.end\_headers()

query\_args = parse\_qs(urlparse(self.path).query)

content\_len = int(self.headers.get('Content-Length', 0))

body = self.rfile.read(content\_len)

if query\_args["event"][0] == "up":

self.up(body)

elif query\_args["event"][0] == "join":

self.join(body)

else:

print("handler for event %s is not implemented" % query\_args["event"][0])

def up(self, body):

up = self.unmarshal(body, integration.UplinkEvent())

print("Uplink received from: %s with payload: %s" % (up.device\_info.dev\_eui, up.data.hex()))

def join(self, body):

join = self.unmarshal(body, integration.JoinEvent())

print("Device: %s joined with DevAddr: %s" % (join.device\_info.dev\_eui, join.dev\_addr))

def unmarshal(self, body, pl):

if self.json:

return Parse(body, pl)

pl.ParseFromString(body)

return pl

httpd = HTTPServer(('', 8090), Handler)

httpd.serve\_forever()

ダウンリンク

ダウンリンクメッセージ:

info

ダウンリンクを保持としてマークすることをお勧めします。これにより、コマンドが繰り返し実行されることはありません。

デフォルトのトピックは以下の通りです:application/APPLICATION_ID/device/DEV_EUI/command/down

command: 詳細については デバイスユーザーマニュアル のダウンリンクコマンドを確認してください。

トピックapplication/APPLICATION_ID/device/DEV_EUI/command/down
devEUIデバイス EUI
confirmedtrue/false(ペイロードを確認済みデータダウンとして送信する必要があるかどうか)
fPort使用する FPort(0 より大きい必要があります)
database64 エンコードされたデータ(プレーンテキスト、ChirpStack によって暗号化されます)

:

1) SenseCAP S210x LoRaWAN センサーを再起動する:

トピック:

application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down

Json:

{

"devEui":"2CF7F1C2\*\*\*",

"confirmed":true,

"fPort":2,

"data":"AMgAAAAAACsm"

}

2) SenseCAP S210x LoRaWAN センサーのアップロード間隔を1分に設定する:

トピック

application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down

Json

{

"devEui":"2CF7F1C2\*\*\*",

"confirmed":true,

"fPort":2,

"data":"AIkAESIBAJBQ"

}
Loading Comments...