LNS設定
SenseCAP M2 Multi Platform Gatewayには、Chirpstackベースの内蔵LoRaWANネットワークサーバーが搭載されており、LoRaWANネットワークの立ち上げに高速で信頼性の高いソリューションを提供します。
ゲートウェイ設定
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 version: LoRaWAN 1.0.3
Regional parameters reversion: A
ADR algorithm: Default ADR algorithm(LoRa only)
Expected uplink interval: カスタマイズ、デフォルト3600s
Codec
に移動し、JavaScript functions
を選択して、SenseCAP Decoder for TTNをコピーして送信します。
ゲートウェイの追加
Gateway
に移動し、Add Gateway
をクリックします。
名前とゲートウェイID(ランダムにIDを生成するためにクリックできます)を定義し、送信します。
デバイスの追加
Tenant
> Application
に移動し、Add Application
をクリックします。
アプリケーションに名前を付けて送信します。
アプリケーションに移動し、Add device
をクリックします。
デバイスEUIを貼り付け、前に追加したデバイスプロファイルを選択して送信します。
アプリケーションキーを貼り付けて送信をクリックします。
デバイスを正しく設定するためにユーザーガイドを確認し、プラットフォームをOther Platform
に選択してください。
デバイスステータスの確認
デバイスのEvents
を確認すると、デバイスがネットワークに参加したときのjoinパケットが取得できます。
パケットの詳細も確認できます。
インテグレーション
この章はクラウドサービス開発のためのもので、以下のガイドラインは参考用です。
MQTT
トピック
MQTTインテグレーションは、イベントタイプで文書化されているすべてのイベントを公開します。
デフォルトのイベントトピックは:
application/APPLICATION_ID/device/DEV_EUI/event/EVENT
Event Types で詳細を確認してください。
アプリケーションタブでアプリケーションIDを確認できます:
- Event types
up | Uplink event |
---|---|
status | Margin and battery status |
join | Device join event |
ack | Confirmed downlink (n)ack |
txack | Downlink transmission ack |
log | Log (or error) event |
location | Location event |
integration | Integration event |
+
はすべてのメッセージを受信することを意味します
例:
- 特定のゲートウェイ下のすべてのデバイスからアップリンクメッセージを受信するには:
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
"
}