NB-IOT デバイスは OneNET プラットフォームに接続されます (オブジェクト モデルの使用を含む)

1 はじめに

インターネット上の関連情報は現在、すべて古いバージョンの OneNET プラットフォームのアカウントを使用しているため、リソース リストなど、古い記事で最も頻繁に表示されるものは、新しいプラットフォーム アカウントでは利用できません。また、使用されている NB モジュールも統合 SDK と非内部統合 SDK を備えたモジュールの接続はあまり便利ではないか、若干異なり、過去 2 年間の新しいオブジェクト モデルに関する関連情報がインターネット上に存在しないか、見つけるのが困難です。 , インターネット上に新しい情報があるかもしれません。しかし、見つけるのは簡単ではありません。見つけることができませんでした。手探りですべてをつなぎ合わせました。初心者の便宜のために、ここに記録します。結局のところ、私の情報見つけることができる最も簡単で完全な情報である必要があります。私の手順に従えば、プラットフォームを介して分析のためにデータをオブジェクト モデルに正常に送信できるようになります。

2. OneNET プラットフォームの登録と構成

2.1. 製品の登録と作成

プラットフォームアカウントの登録は非常に簡単であることは言うまでもなく、企業と個人ユーザーの違いはデバイスの数などですので、初期のテストは問題ありませんが、後でプロジェクトを正式に開始するアイデアがあれば、エンタープライズ ユーザーは後で認証できますが、結局のところ、OneNET のエンタープライズ認証は AEP が異なるのと同じであり、非常に面倒です。

  1. アカウントを登録したら、左上隅をクリックし全部产品服务て選択します物联网开放平台
    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムが存在する可能性があります。画像を保存して直接アップロードすることをお勧めします (img-JQ8PZpbM-1687836381139) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625093417083.png)]

  2. 「製品開発」をクリックします
    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-qxpp3FN5-1687836554461) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625093814354.png)]

  3. クリックして製品を作成します[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-fsIWr7Tp-1687836381140) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625094021215.png)]

  4. 製品の種類は、アクセス契約を記入する際のユーザー自身の選択によって異なります。ここでは LwM2M を使用しています。オブジェクト モデルを使用できるように、データ プロトコルとして OneJson を選択することを忘れないでください。ネットワーク方式には NB を選択してください。開発計画は次のとおりです。標準プラン。最後に「OK」をクリックして作成します。
    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-a5kbXH0b-1687836381141) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625094222290.png)]

2.2. オブジェクトモデルの設定

まず、プラットフォームのオブジェクト モデルOneNET - China Mobile Internet of Things Open Platform (10086.cn)の説明を理解することができます。私の言葉を使って簡単に理解すると、オブジェクト モデルは、送信されたデータをデータに従って解析できます。設定した形式で出力され、キーと値のペアの形式でプラットフォームに表示されます。

次に、プラットフォーム上でオブジェクト モデルを設定する方法を見てみましょう。

  1. 作成が成功したら、「製品開発」をクリックします。[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-3U2ZO1gG-1687836381141) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625094600846.png)]

  2. 設定対象モデルをクリック
    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムが存在する可能性があります。画像を保存して直接アップロードすることをお勧めします (img-IFIwuOPb-1687836381141) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230625095006170.png)]

  3. 単純なテストケースのオブジェクトモデルを作成する

    1. クリックしてカスタム関数ノードを追加します

    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-bjQnVOSb-1687836381141) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230627092941424.png)]

    1. 単純なオブジェクト モデルを作成し、完了したら [追加] をクリックします。

    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-6Bh8qfM1-1687836381142) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230627093241581.png)]

    新しい情報イベントがリストに表示されます。「保存」をクリックして、オブジェクト モデルに設定したイベントを保存します。

    [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-cJ×W09IM-1687836381142) (NB-IOT デバイスは OneNET プラットフォームに接続されています。 /image-20230627093405580.png)]

2.3. 装備の追加

簡単なオブジェクトモデルを設定したら、まずはその使いやすさをテストしますが、現時点では製品配下にデバイスが存在しないため、まずデバイスを追加します。

  1. [デバイス アクセス管理] -> [デバイス管理] -> [デバイスの追加] をクリックします。
    ここに画像の説明を挿入します

  2. 製品 作成したばかりのテストを選択します。デバイス名は任意ですが、2 つの必須フィールドがまだ不足していますIMIEIMSI
    ここに画像の説明を挿入します

  3. オープンシリアルポートデバッグアシスタント入力

    AT+CGSN=1IMEI番号取得

    AT+CIMIIMSIコードを取得

    ここに画像の説明を挿入します

  4. 取得した合計を入力しIMEIIMSI「OK」をクリックします

    ここに画像の説明を挿入します

デバイスリストに追加したばかりのデバイスが表示されます。
ここに画像の説明を挿入します

2.4. テストオブジェクトモデル

  1. デバイスの詳細をクリックしますここに画像の説明を挿入します

  2. [デバイスのデバッグ] -> [イベント レポート] -> [デバッグの開始] をクリックします。ここに画像の説明を挿入します

  3. イベントについては、先ほど作成したテスト ケースを選択し、必要に応じて特定のパラメーターを入力し、[イベントのレポート] をクリックします。ここに画像の説明を挿入します

  4. 右側のデバッグ ログには、デバイスからプラットフォームに報告されたデータ フォームが表示されます。ここに画像の説明を挿入します
    最初にコピーし、後で使用する必要があります。

    { "title": "イベント上报", "timestamp": "2023-06-27 09:54:04", "message": "{"payloads":{"id":"1687830843101","version": "1.0","params":{"テスト":{"値":{"開始":110,"中間":119,"終了":120}}},"メソッド":"thing.event.post ”},”url”:”/19/0/0"}" }

    ここでは、まず接続プラットフォームに関する知識を学ぶことができます

    1. オブジェクトモデル通信プロトコル>OneJson入門

    2. LwM2M プロトコル アクセス>LwM2M-Studio の概要

3.NB-IOTを接続する

3.1. モジュールの初期化

//モジュールがATコマンドに正常に応答できることを確認する

わかりました

//モジュールのIMEI番号を取得

AT+CGSN=1

+CGSN: 「865324037375316」

わかりました

//モジュールファームウェアのバージョン番号を問い合わせる

AT+CGMR

+CGMR: N306_C1-E05-STD-BZ-001

わかりました

//モジュールがSIMカードを認識できることを確認する

AT+CPIN?

+CPIN: 準備完了

わかりました

//IMSIを取得する

AT+CIMI

460016657520885

わかりました

//信号が良好であることを確認 12< CSQ <31

AT+CSQ

+CSQ: 31.99

わかりました

//低電力モードをアクティブにオフにする

AT+ECPMUCFG=1,1

わかりました

//ネットワーク接続ステータスを問い合わせる

AT+CGATT?

+CGATT: 1

わかりました

// ネットワークの登録ステータスを問い合わせる

AT+CEREG?

+CEREG: 0,1

わかりました

//PDP のアクティベーションが成功したかどうかを問い合わせる

AT+CGPADDR

+CGPADDR: 0,“10.20.221.89”

わかりました

ここでの特定のコマンドは異なる場合があります。特定のコマンドについては、モジュールの製造元に情報を問い合わせる必要があります。ここでは Youfang N306 モジュールを使用しています (明らかに、これは宣伝ではありません)

3.2. モジュールを OneNET プラットフォームに接続し、登録を完了します。

//基本的な通信スイートのバージョンを問い合わせる

AT+MIPLVER?
+MIPLVER: 2.3.0

わかりました

//基本通信スイートは正常に作成され、返された <ref> は 0 です。0 は基本通信スイート識別子であり、後続の AT コマンドで使用する必要があります。

AT+MIPLCREATE
+MIPLCREATE: 0

わかりました

// オブジェクトを 19 として追加します

AT+MIPLADDOBJ=0,19,1,“1”,1,1
OK

//モジュールリクエスト登録 AT+MIPLOPEN=0,3600
OK

+MIPLEVENT:0,1 //OneNET プラットフォームは結果を返します BOOTSTRAP_START

+MIPLEVENT:0,2 //OneNET プラットフォームは結果 BOOTSTRAP_SUCCESS を返します

// 内部統合プラットフォーム SDK ではないモジュールは 0,4 を返しません。

+MIPLEVENT:0,4 //OneNET プラットフォームは結果 CONNECT_SUCCESS を返します

+MIPLEVENT:0,6 //OneNET プラットフォームは結果 REG_SUCCESS を返します

//OneNET プラットフォーム オブジェクト/インスタンスの監視リクエスト

+MIPLOBSERVE: 0,125579,1,19,0,-1

//モジュールは監視リクエストに応答します。msgid= 125579 は、 OneNET プラットフォームの監視リクエスト メッセージで発行された msgidOKに対応する必要があります。

AT+MIPLOBSERVERSP=0,125579,1

//OneNET プラットフォーム オブジェクトの検出リクエスト

+MIPLDISCOVER: 0,60044,19

//モジュールは Discover リクエストに応答します。msgid= 60044 は、 OneNET プラットフォームの Discover リクエスト メッセージで発行された msgidに対応する必要があります。

AT+MIPLDISCOVERRSP=0,60044,1,1,“1”
OK

//プラットフォームは Discover リクエストの結果をモジュールに返し、サブスクリプションを完了します。

+マイルイベント: 0,11

この時点で、プラットフォームとの通信が正常に確立され、デバイスのステータスがオンラインであることが確認されました。

ここに画像の説明を挿入します

4. ONENET プラットフォームにデータをアップロードする

デバイスがプラットフォームにアップロードする必要があり、オブジェクト モデルによって解析できるデータの形式は、16 進数の OneJson 形式データである必要があります。

したがって、現時点では、デバイスのデバッグ中にコピーしたデータを使用する必要があり、いくつかの実用的なツール Web サイトを使用して、それを必要なデータに変換できます。

  1. ここでエスケープ解除関数を使用して、コピーしたデータを必要なものにフォーマットできます (プレイロード内のコンテンツのみが必要です) JSON Online | JSON の解析とフォーマット - SO JSON オンライン ツールここに画像の説明を挿入します

変換後、次のようなデータが得られます

{
    
    
	"id": "1687830843101",
	"version": "1.0",
	"params": {
    
    
		"Test": {
    
    
			"value": {
    
    
				"Begin": 110,
				"Mid": 119,
				"End": 120
			}
		}
	},
	"method": "thing.event.post"
}
  1. 安全を期すために、空白文字をクリアして、オンライン単語数カウント ツール | Noob Tool (runoob.com)を使用しましょう。

ここに画像の説明を挿入します

このような結果が得られます

{
    
    "id":"1687830843101","version":"1.0","params":{
    
    "Test":{
    
    "value":{
    
    "Begin":110,"Mid":119,"End":120}}},"method":"thing.event.post"}
  1. 次に、テキスト変換ツールを使用して 16 進数データに変換します 16 進数変換、16 進数変換文字列、オンライン 16 進数変換 | オンライン ツール (sojson.com)

ここに画像の説明を挿入します

次のような 16 進数データが​​得られました

7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d
  1. 最後に、このデータを先ほど空白文字を削除するために使用した単語カウント ツールにコピーし、合計文字数と変換されたデータを書き留めます。これは後で使用します。

    ここに画像の説明を挿入します

  2. シリアルポートツールを開いてデータを送信します

    AT+MIPLNOTIFY=0,86296,19,0,0,2,128,"7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d",0,0,797
    

    ここに画像の説明を挿入します

戻りコード 26 は、送信が成功し、プラットフォームのイベント レコードがオープンされたことを意味します。

ここに画像の説明を挿入します

アップロードしたデータを確認しました

  1. ここでは、データコマンドを送信する形式について簡単に説明します。
AT+MIPLNOTIFY=0,86296 ,19,0,0,2,128,"7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d",0,0,797

0 - 前の参照基本通信スイートの識別です

86296 — Observe によって要求された msdID です

19,0,0 - プラットフォーム オブジェクト モデル チャネル アップリンク - データ レポートについては、以前のOneNET - 中国モバイル モノのインターネット オープン プラットフォーム (10086.cn)で説明されています。

2 - 不透明を意味します。AT+MIPLNOTIFY 命令で指定されたデータ型です。プラットフォーム オブジェクト モデルによって解析される OneJson 形式のデータをアップロードする必要がある場合は、この形式のデータを選択する必要があります (具体的には、さまざまなモジュール メーカーの AT (命令の説明、ここでは使用するモジュールに限定します)

128—これが、文字数 256 を覚えておく必要があると前に述べた理由です。これは文字数から計算されたバイト長ですが、すべてがバイト長を埋めるわけではなく、前に選択したデータ型によって異なります。ただし、この NB モジュールでは、OneJson データをアップロードして物理モデルで分析する場合は、この計算を選択する必要があります。

「7b22...277d」は明らかに送信されるコンテンツであり、上で述べた一連の変換を行う必要があります。

一般に、最後の 0,0,797 には大きな意味はなく、単に 0,0,0 と書くだけで問題ありません。

最初の 0 は命令シーケンス番号です。複数の命令を 1 つの命令に結合する必要がある場合は、N-1 から 0 まで降順に番号が付けられます。0 の場合、命令は終了します。

2 番目の 0 は、複数のメッセージがある場合です。

最初のメッセージ 1 件

2 つの中間メッセージ

0 最後のメッセージ

この 797 は adcid です。この値は +MIPLEVENT コマンドで返されます。797 と書くのは個人的な習慣です。コマンドでは 0 は返されず、コマンドでは 1 ~ 65535 が返されます。
ここに画像の説明を挿入します

5. 注意を払う

  1. 異なるモジュール製造元の AT コマンドは必ずしも同じではなく、特定の実装を独自のモジュールの AT コマンドと組み合わせる必要があります。
  2. 記事のObserveが違います 途中でちょっとしたハプニングがあったので再接続しました スクショ撮り直すのが面倒だったので結果的に違いが出てしまいました ここに注意すればいいのですが誰もいませんこれもコピーする必要があります。
  3. AEP プラットフォームである OneNET のコマンド発行機能の一部はプラットフォーム上に直接実装できないため、プラットフォーム API を介して作成して呼び出す必要があります。

6. 結論

  1. ご質問がございましたら、コメント欄にメッセージを残していただけます。間違いがあれば修正していただければ幸いです。
  2. Telecom AEP プラットフォームも使用していますが、これは比較的単純です。コメント エリアに必要とする人が多数いる場合は、将来、AEP プラットフォームの接続方法と使用方法に関する別のチュートリアルを公開することもできます。
  3. 私の書いた内容が役に立ったと思われる場合は、サポート メッセージを送ってください三连。ありがとうございます ORZ。

おすすめ

転載: blog.csdn.net/Daears/article/details/131413545