Skip to main content

LNS設定

SenseCAP M2 Multi Platform Gatewayには、Chirpstackベースの内蔵LoRaWANネットワークサーバーが搭載されており、LoRaWANネットワークの立ち上げに高速で信頼性の高いソリューションを提供します。

ゲートウェイ設定

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をクリックして設定を適用します。

Note

プロセスの開始には約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 version: LoRaWAN 1.0.3

Regional parameters reversion: A

ADR algorithm: Default ADR algorithm(LoRa only)

Expected uplink interval: カスタマイズ、デフォルト3600s

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

tip

デバイスを正しく設定するためにユーザーガイドを確認し、プラットフォームをOther Platformに選択してください。

デバイスステータスの確認

デバイスのEventsを確認すると、デバイスがネットワークに参加したときのjoinパケットが取得できます。

pir

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

pir

インテグレーション

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

MQTT

トピック

MQTTインテグレーションは、イベントタイプで文書化されているすべてのイベントを公開します。

デフォルトのイベントトピックは:

application/APPLICATION_ID/device/DEV_EUI/event/EVENT

Event Types で詳細を確認してください。

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

pir

  • Event types
upUplink event
statusMargin and battery status
joinDevice join event
ackConfirmed downlink (n)ack
txackDownlink transmission ack
logLog (or error) event
locationLocation event
integrationIntegration event
Note

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

  • 特定のゲートウェイ下のすべてのデバイスからアップリンクメッセージを受信するには:
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 情報を送信します。

Note

http のみサポート、https はサポートしません。

pir

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()

ダウンリンク

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

info

ダウンリンクを保持済みとしてマークすることを推奨します。これにより、コマンドが繰り返し実行されることがなくなります。

デフォルトのTopicは:application/APPLICATION_ID/device/DEV_EUI/command/down

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

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

  1. SenseCAP S210x LoRaWANセンサーの再起動:

Topic

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

{

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

"confirmed":true,

"fPort":2,

"data":"AMgAAAAAACsm"

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

トピック

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

Json

{

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

"confirmed":true,

"fPort":2,

"data":"AIkAESIBAJBQ

"
}
Loading Comments...