- Home
- Node-REDとプロトコルの統合
- Node-RED 例: Milesight LoRaWAN コントローラ経由で Modbus INT64 タイプ レジスタ値を読み取る
Node-RED 例: Milesight LoRaWAN コントローラ経由で Modbus INT64 タイプ レジスタ値を読み取る
説明
このNode-REDの例は、Milesight LoRaWANコントローラーを介してModbus INT64型レジスタを読み取るソリューションを提供します。
要件
- Milesightゲートウェイ: UG56/UG65/UG67
- Milesight LoRaWANコントローラー (UC100/UC300/UC50x): 本記事ではMilesight UC300を例として使用します
設定
ステップ1: コントローラのパススルー機能を有効化
コントローラのパススルー機能を有効化する方法については、こちらの記事を参照してください: Modbus RS485ブリッジLoRaWAN機能の使用方法 : IoTサポート
ステップ2: Node-REDを起動し、フロー例をインポート
- 1. App > Node-RED ページに移動し、Node-RED プログラムを有効化します。プログラムの読み込みが完了するまでしばらく待ち、Launch ボタンをクリックして Node-RED Web GUI を起動します。
- 2. Node-RED Web GUI にログインします。アカウント情報はゲートウェイ Web GUI と同じです。
- 3. 「Import」をクリックし、内容を貼り付けるか JSON 形式のファイルをインポートして Node-RED フロー例をインポートします。
ステップ2: Node-RED設定
フロー構造:
Content:
| [{“id”:”6791bad1501bb22a”,”type”:”tab”,”label”:”Flow 2″,”disabled”:false,”info”:””,”env”:[]},{“id”:”338cd43473e9c97e”,”type”:”LoRa Output”,”z”:”6791bad1501bb22a”,”name”:”send modbus command read register1 to 4″,”eui”:”24E124445C195920″,”payloadType”:”hex”,”payload”:”0103000000044409″,”confirmed”:true,”port”:”126″,”x”:690,”y”:120,”wires”:[]},{“id”:”9286d28233ec9617″,”type”:”inject”,”z”:”6791bad1501bb22a”,”name”:”inject every 300 seconds”,”props”:[],”repeat”:””,”crontab”:””,”once”:true,”onceDelay”:”300″,”topic”:””,”x”:330,”y”:120,”wires”:[[“338cd43473e9c97e”]]},{“id”:”fa5877e64e18a487″,”type”:”LoRa Input”,”z”:”6791bad1501bb22a”,”name”:””,”devEUI”:””,”extendedField”:””,”x”:180,”y”:220,”wires”:[[“22927f94ad9846da”]]},{“id”:”22927f94ad9846da”,”type”:”Device Filter”,”z”:”6791bad1501bb22a”,”name”:””,”eui”:”24E124445C195920″,”x”:410,”y”:220,”wires”:[[“dcdc9cc58b8da59a”]]},{“id”:”dcdc9cc58b8da59a”,”type”:”function”,”z”:”6791bad1501bb22a”,”name”:”Extracting values and combining”,”func”:”// Function to combine four 16-bit registers into a single 64-bit value\nfunction combineRegisters(msg_payload_base64) {\n // Step 1: Decode the Base64 payload to raw bytes\n let payload_bytes = Buffer.from(msg_payload_base64, ‘base64’);\n\n // Step 2: Convert the raw bytes to a hexadecimal string\n let payload_hex = payload_bytes.toString(‘hex’);\n\n // Step 3: Extract the values of the four registers from the hexadecimal string\n // Assuming the values are 16-bit and stored consecutively\n let register1_hex = payload_hex.slice(6, 10); // First 4 characters (2 bytes) for register 1\n let register2_hex = payload_hex.slice(10, 14); // Next 4 characters (2 bytes) for register 2\n let register3_hex = payload_hex.slice(14, 18); // Next 4 characters (2 bytes) for register 3\n let register4_hex = payload_hex.slice(18, 22);// Next 4 characters (2 bytes) for register 4\n\n // Convert the hexadecimal values to integers\n let register1_value = parseInt(register1_hex, 16);\n let register2_value = parseInt(register2_hex, 16);\n let register3_value = parseInt(register3_hex, 16);\n let register4_value = parseInt(register4_hex, 16);\n\n // Step 4: Combine the four 16-bit register values into a single 64-bit value\n // JavaScript doesn’t handle 64-bit integers natively, so we’ll use BigInt\n let combined_value = (BigInt(register1_value) << 48n) |\n (BigInt(register2_value) << 32n) |\n (BigInt(register3_value) << 16n) |\n BigInt(register4_value);\n // current byte order is ABCDEFGH\n return { combined_value, payload_hex, register1_hex, register2_hex, register3_hex, register4_hex };\n}\n\n// Example usage\nlet msg_payload_base64 = msg.payload; // Assuming msg.payload contains the Base64 encoded payload\nlet result = combineRegisters(msg_payload_base64);\n\n// Add the combined value, hex payload, and register hex values to the message\nmsg.combined_value = result.combined_value;\nmsg.payload_hex = result.payload_hex;\nmsg.register1_hex = result.register1_hex;\nmsg.register2_hex = result.register2_hex;\nmsg.register3_hex = result.register3_hex;\nmsg.register4_hex = result.register4_hex;\n\n// Set the payload to an object containing combined_value, payload_hex, and register hex values\nmsg.payload = {\n combined_value: result.combined_value,\n payload_hex: result.payload_hex,\n register1_hex: result.register1_hex,\n register2_hex: result.register2_hex,\n register3_hex: result.register3_hex,\n register4_hex: result.register4_hex\n};\n\nreturn msg;\n”,”outputs”:1,”noerr”:0,”initialize”:””,”finalize”:””,”libs”:[],”x”:710,”y”:220,”wires”:[[“40d119dc08447a5a”]]},{“id”:”40d119dc08447a5a”,”type”:”debug”,”z”:”6791bad1501bb22a”,”name”:”debug 5″,”active”:true,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”payload”,”targetType”:”msg”,”statusVal”:””,”statusType”:”auto”,”x”:1000,”y”:220,”wires”:[]}] |
Inject Node: トリガー時間設定
LoRa Output Node: Modbusデバイスへのコマンド送信。本例ではアドレス0-3の4レジスタ読み取りコマンドを発行
Modbusコマンド例:
| Slave ID | Function | Address | Length | Parity |
| 0x01 | 0x03 | 0x00 0x00 | 0x00 0x04 | 0x44 0x09 |
LoRa入力ノード: LoRaパケットを受信
デバイスフィルターノード: コントローラパケットをフィルタリング
ファンクションノード: 受信した4つのレジスタ値を結合し、各レジスタ値を出力
Debugノード: 結果を出力
ステップ3: デプロイと結果確認
- 1. Deployをクリックし、Node-REDの設定を保存
- 2. Injectノード左側のボタンをクリックすると手動でModbusコマンドを送信でき、右側で結果を確認可能
——-以上—–
関連記事
Node-REDとプロトコルの統合
Node-RED 例: センサーデータを Google スプレッドシートに送信するGoogleスプレッドシートにデータを送信するソリューションを提供します
Node-RED 例: 特定のIPからのアクセスを制限するためのiptablesルールの設定Milesightゲートウェイのiptablesルールを永続的に設定するソリューションを提供します
Gateway に組み込まれた Node-Red を使用して SMS アラームをトリガーする方法Milesight UG6X/UG56ゲートウェイはビルドインNode-Redをサポートしています。このNode-Redの例では、Node-Redを使用してSMSアラームをトリガーするソリューションを提供し、EM300の温度が26℃を超えた場合にSMSアラームをトリガーする例を取り上げます。
Milesightゲートウェイ経由でLoRaWANデバイスをBACnet BMSシステムに統合する方法MilesightゲートウェイはBACnetサーバーとして動作し、LoRaWANデバイスとBMSシステムまたはBACnetデバイス間の通信を設定することができます。
MilesightゲートウェイによるLoRaWAN to Modbus機能の実現方法Milesightゲートウェイは、Modbus RTU over TCPまたはModbus TCPプロトコルを介して、LoRaWANデバイスとModbusクライアント(マスター)間の通信をセットアップするModbusサーバー(スレーブ)として動作し、LoRaWANデバイスをBMSやPLCシステムに迅速かつ簡単に統合することができます。
MilesightゲートウェイでAzureのダウンリンク制御を実現する方法Azure IoT Hub からダウンリンクコマンドを送信し、Node-red 経由でダウンリンクデータを変換することで、デバイスを遠隔操作する方法について、とりあえずの解決策を説明します。
Node-Red の例: VS121&WS202 – WS50xスイッチリンク制御VS121またはWS202を使用して、WS50Xを点灯/消灯させるNode-REDの例を示します。
Node-Red の例: バックネットサーバーの有効化/無効化Node-RED経由でバックネットサーバー機能を有効または無効にするためのソリューションを提供します。
Node-Red ユーザー名とパスワードの変更方法ゲートウェイ WEB GUI と異なる Node-red のログインパスワードを必要とし、Node-red を通じて Node-red のログイン認証情報を直接変更できるアプリケーションに適用されます。
Node-Redの読み取り専用ユーザーを追加する方法Node-Red に読み取り専用のユーザーを追加する方法を説明します。読み取り専用のユーザーは、Node-Red にのみアクセスできますが、フローの変更やフローの展開は許可されていません。
Node-Redを使用してシェルコマンドを実行する方法node-red でシェルコマンドを実行する方法について説明します。
Node-Redでデコーダーを使用する方法MilesightのLoRaWANゲートウェイはノードレッド機能をサポートしており、関連ソリューションのシミュレーションやセットアップを簡単に行うことができます
BACnetシステムからMilesightゲートウェイ経由でダウンリンクを送信する方法Milesightゲートウェイは、BMSシステムやBACnet機器からのコマンドをエンコードし、LoRaWAN機器にコマンドを送信することで、遠隔制御を実現します。
Milesight ゲートウェイの Node Red でダッシュボードを使用する方法Milesight ゲートウェイの Node Red ダッシュボードを使用して、センサーのデータを表示する方法について説明します。
Milesight ゲートウェイに追加の Node-RED ノードをインストールする方法ゲートウェイに Node-RED ノードを追加インストールする方法について説明します。
Milesightゲートウェイ経由でLoRaWANセンサーをBACnet BMSシステムに統合する方法Milesight ゲートウェイは、LoRaWAN センサーのデータをデコードし、センサーデータを BMS システムまたは BACnet デバイスで使用される BACnet オブジェクトにマッピングできます。これにより、LoRaWAN デバイスをビル管理システムに迅速かつ容易に統合できます。
Gatewayに組み込まれたNode-Redを使用してDOを制御する方法ゲートウェイに組み込まれた Node-Red 機能を使用して UC501 のデジタル出力ステータスを変更し、EM500-SMT が検出した土壌の湿度に応じて灌漑装置が動作するようにします。
ソリューション / IoT サポート
- Milesight ルーターで Modbus RTU を Modbus TCP に設定する方法 2025年8月24日最もよく使用されるのは、Modbus RTU(リモートターミナルユニット)、シリアル(RS-232またはRS-485)プロトコル、またはModbus(TCP/IP)伝送制御プロトコルとインターネットプロトコルです。
- Node-RED 例: Milesight LoRaWAN コントローラ経由で Modbus INT64 タイプ レジスタ値を読み取る 2026年1月4日Milesight LoRaWANコントローラーを介してModbus INT64型レジスタを読み取るソリューションを提供します






















