SenseCAP M2 マルチプラットフォームゲートウェイ LNS 設定
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
ゲートウェイ設定
Web UI を使用してゲートウェイを設定します。クイックスタートを確認して Luci にログインしてください。
チャネルプラン設定
LoRa
> Channel Plan
に移動します。
地域と周波数プランを選択します。
設定後、Save&Apply
をクリックします。
ローカルネットワークサーバー設定
LoRa
> LoRa Network
に移動します。
モードを Local Network Server
に設定し、MQTT 情報(Broker Host/Port/User/Password)を追加します。他のパラメータはデフォルト値のままにしておくことができます。
設定を適用するには Save&Apply
をクリックします。
プロセスの開始には約1分かかります。その後、GUI 設定にアクセスできます。
ChirpStack GUI 設定
http://localhost:8080
から ChirpStack GUI にログインします。
デフォルトのアカウントとパスワード: admin
その後、ダッシュボードページが表示されます。
地域を確認する
Network Server
> Regions
に移動します。
Region ID が表示されるはずです。それをクリックして情報を確認します。前のステップで設定した内容と一致している必要があります。
デバイスプロファイルを追加する
Tenant
> Device Profiles
に移動し、Add Profile
をクリックします。
MAC バージョン: LoRaWAN 1.0.3
地域パラメータのリビジョン: A
ADR アルゴリズム: デフォルトの ADR アルゴリズム (LoRa のみ)
期待されるアップリンク間隔: カスタマイズ可能、デフォルトは 3600 秒
Codec
に移動し、JavaScript functions
を選択します。SenseCAP Decoder for TTN をコピーして提出します。
ゲートウェイを追加する
Gateway
に移動し、Add Gateway
をクリックします。
名前とゲートウェイ ID を定義します(ID をランダムに生成することもできます)。その後、提出します。
デバイスを追加する
Tenant
> Application
に移動し、Add Application
をクリックします。
アプリケーションに名前を付けて提出します。
アプリケーションに移動し、Add device
をクリックします。
デバイス EUI を貼り付け、前に追加したデバイスプロファイルを選択して提出します。
アプリケーションキーを貼り付けて提出します。
デバイスのステータスを確認する
デバイスの Events
を確認し、デバイスがネットワークに参加した際のジョインパケットを取得します。
パケットの詳細も確認できます。
統合
この章はクラウドサービス開発のためのものであり、以下のガイドラインは参考用です。
MQTT
トピック
MQTT 統合は、イベントタイプで文書化されているすべてのイベントを公開します。
デフォルトのイベントトピックは以下の通りです:
application/APPLICATION_ID/device/DEV_EUI/event/EVENT
詳細については、イベントタイプを確認してください。
アプリケーション ID はアプリケーションタブで確認できます:
- イベントタイプ
up | アップリンクイベント |
---|---|
status | マージンとバッテリーステータス |
join | デバイス参加イベント |
ack | 確認済みダウンリンク (n)ack |
txack | ダウンリンク送信 ack |
log | ログ(またはエラー)イベント |
location | 位置情報イベント |
integration | 統合イベント |
+
はすべてのメッセージを受信することを意味します。
例:
- 特定のゲートウェイ下のすべてのデバイスからアップリンクメッセージを受信するには:
gateway/<GATEWAY_EUI>/device/+/event/up
- アプリケーション下のすべてのデバイスからすべてのメッセージを受信するには:
application/+/device/+/event/+
- すべてのゲートウェイからすべてのデバイスメッセージを受信するには:
gateway/+/device/+/event/+
gatewayid
を確認してゲートウェイを区別できます。
ペイロード
object.valid
が true の場合、データ解析が成功したことを意味します。その後、object.messages
を走査して必要なデータタイプを抽出できます。
1) SenseCAP LoRaWAN S210X センサーのアップイベントペイロード例の説明:
upload\_battery
: バッテリーupload\_interval
: アップロード間隔、単位:秒upload\_version
: ハードウェア/ファームウェアバージョンreport\_telemetry
: 測定値
‘report_telemetry’ メッセージ内の measurementId
については、SenseCAP Measurement ID を確認してください。
1) SenseCAP データロガーのアップイベントペイロード例の説明:
‘report_telemetry’ メッセージ内の measurementId
については、SenseCAP Measurement ID を確認してください。
HTTP
HTTP タブで +
をクリックして新しい HTTP 統合を追加します。
LNS は設定された URL に POST メッセージを送信します。
URL 情報を送信してください。
https ではなく http のみをサポートします。
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()
ダウンリンク
ダウンリンクメッセージ:
ダウンリンクを保持としてマークすることをお勧めします。これにより、コマンドが繰り返し実行されることはありません。
デフォルトのトピックは以下の通りです:application/APPLICATION_ID/device/DEV_EUI/command/down
command
: 詳細については デバイスユーザーマニュアル のダウンリンクコマンドを確認してください。
トピック | application/APPLICATION_ID/device/DEV_EUI/command/down |
---|---|
devEUI | デバイス EUI |
confirmed | true/false(ペイロードを確認済みデータダウンとして送信する必要があるかどうか) |
fPort | 使用する FPort(0 より大きい必要があります) |
data | base64 エンコードされたデータ(プレーンテキスト、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"
}