SenseCAP M2 Multi-Platform Gateway LNS 設定
ゲートウェイ設定
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
に移動します。
地域IDが表示されているはずです。それをクリックして情報を確認し、前のステップでの設定と同じであることを確認してください。
デバイスプロファイルの追加
Tenant
> Device Profiles
に移動し、Add Profile
をクリックします。
MAC version: LoRaWAN 1.0.3
Regional parameters reversion: A
ADR algorithm: Default ADR algorithm(LoRa only)
Expected uplink interval: カスタマイズ、デフォルト3600秒
Codec
に移動し、JavaScript functions
を選択して、SenseCAP Decoder for TTNをコピーして送信します。
ゲートウェイの追加
Gateway
に移動し、Add Gateway
をクリックします。
名前とゲートウェイIDを定義し( をクリックしてIDをランダムに生成できます)、送信します。
デバイスの追加
Tenant
> Application
に移動し、Add Application
をクリックします。
アプリケーションに名前を付けて送信します。
アプリケーションに移動し、Add device
をクリックします。
デバイスEUIを貼り付け、前に追加したデバイスプロファイルを選択して送信します。
アプリケーションキーを貼り付けて送信をクリックします。
デバイスステータスの確認
デバイスのEvents
を確認すると、デバイスがネットワークに参加したときのjoinパケットが取得できます。
パケットの詳細も確認できます。
インテグレーション
この章はクラウドサービス開発のためのものです。以下のガイドラインは参考用です。
MQTT
トピック
MQTTインテグレーションは、イベントタイプで文書化されているすべてのイベントを公開します。
デフォルトのイベントトピックは:
application/APPLICATION_ID/device/DEV_EUI/event/EVENT
Event Types で詳細を確認してください。
アプリケーションIDはアプリケーションタブで確認できます:
- Event types
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 を走査して必要なデータタイプを抽出できます。
- SenseCAP LoRaWAN S210X センサーのアップイベントペイロード例の説明:
upload_battery
: バッテリーupload_interval
: アップロード間隔、単位:秒upload_version
: ハードウェア/ファームウェアバージョンreport_telemetry
: 測定値
'report_telemetry' メッセージ内の measurementId
については、詳細は SenseCAP Measurement ID を確認してください。
- SenseCAP データロガーのアップイベントペイロード例の説明:
'report_telemetry' メッセージ内の measurementId
については、詳細は SenseCAP Measurement ID を確認してください。
HTTP
HTTP タブで +
をクリックして新しい HTTP 統合を追加します。
LNS は設定された URL に POST としてメッセージを送信します。
URL 情報を送信してください。
http のみサポート、https はサポートしていません。
HTTP 統合は設定されたイベントエンドポイントまたはエンドポイント(複数の URL を設定可能、カンマ区切り)に POST リクエストを行います。イベント URL クエリパラメータはイベントのタイプを示します。
HTTP 統合は Event Type で文書化されているすべてのイベントを公開します。
例:
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 marshaler
\# False - Protobuf marshaler (binary)
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()
ダウンリンク
ダウンリンクメッセージ:
ダウンリンクを保持済みとしてマークすることを推奨します。これにより、コマンドが繰り返し実行されることがなくなります。
デフォルトのTopicは:application/APPLICATION_ID/device/DEV_EUI/command/down
command
:詳細については、デバイスユーザーマニュアルのダウンリンクコマンドを確認してください。
Topic | application/APPLICATION_ID/device/DEV_EUI/command/down |
---|---|
devEUI | デバイスEUI |
confirmed | true/false(ペイロードを確認済みデータダウンとして送信する必要があるかどうか) |
fPort | 使用するFPort(0より大きい値である必要があります) |
data | base64エンコードされたデータ(平文、ChirpStackによって暗号化されます) |
例:
- SenseCAP S210x LoRaWANセンサーの再起動:
Topic:
application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down
Json:
{
"devEui":"2CF7F1C2\*\*\*",
"confirmed":true,
"fPort":2,
"data":"AMgAAAAAACsm"
}
- SenseCAP S210x LoRaWANセンサーのアップロード間隔を1分に設定する:
トピック:
application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down
Json:
{
"devEui":"2CF7F1C2\*\*\*",
"confirmed":true,
"fPort":2,
"data":"AIkAESIBAJBQ"
}