SUSI 節點
研華(Advantech)建立了 SUSI API,用來簡化應用程式開發,並在研華的嵌入式平台上提供專屬服務。SUSI API 讓客戶在整合解決方案時,更容易進行功能的程式設計與設定。

SUSI 節點透過 SUSI API 取得研華硬體資料(包含 Intel x86、RISC NXP 以及 Nvidia Jetson),並將資料轉換為 ROS DDS 資料格式,然後透過預先定義的 topic "/adv/susicontrol" 發佈。客戶端節點可以訂閱此 topic 以接收 SUSI 節點所發布的硬體資料。SUSI 節點也支援透過 ROS service 發送設定指令來修改可寫入的感測器,ROS 開發者可以透過 SUSI Node 輕鬆設定與控制平台資訊。

Topic 定義
SUSIControl 節點的 topic 定義如下:
/adv/susicontrol
訊息定義
請參考 Advantech ROS2 資料格式 章節
訊息更新週期
訊息每 10 秒會更新一次,你可以使用 ROS2 工具來驗證資料更新:
使用 ROS2 工具訂閱感測器
Step1. 設定 ROS2 環境變數:
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 列出所有 topic:
$ ros2 topic list
輸出:
/adv/parameter_events
/adv/susicontrol
/parameter_events
/rosout
Step4. 訂閱節點資料
$ ros2 topic echo /adv/susicontrol
輸出:
sensor: SUSIControl/DiskInfo/Disk C Total Disk Space
type: v
bv: false
v: 60039.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/Platform Information/BIOS revision
type: sv
bv: false
v: 0.0
sv: V1.13
ts: 1677659397728
---
sensor: SUSIControl/Hardware Monitor/Voltage/5V
type: v
bv: false
v: 5.216
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/Hardware Monitor/Fan Speed/CPU
type: v
bv: false
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/GPIO/GPIO00/Dir
type: bv
bv: true
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/GPIO/GPIO01/Dir
type: bv
bv: true
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/GPIO/GPIO06/Level
type: bv
bv: true
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/GPIO/GPIO07/Dir
type: bv
bv: true
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/GPIO/GPIO07/Level
type: bv
bv: true
v: 0.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/Backlight/Backlight 1/Brightness
type: v
bv: false
v: 255.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/Backlight/Backlight 1/Frequency
type: v
bv: false
v: 18780.0
sv: ''
ts: 1677659397728
---
sensor: SUSIControl/Backlight/Backlight 1/Polarity
type: bv
bv: false
v: 0.0
sv: ''
ts: 1677659397728
---
Sample Client
本節說明如何透過 SUSIControl 節點的 topic 訂閱資料。
Node.js
程式 rclnodejs_edge_data_client 是一個 node.js 範例,用於幫助使用者了解如何使用 rclnodejs 訂閱 SUSI 節點的資料。請依照以下步驟執行程式,當程式啟動後,會訂閱 SUSI 節點 的感測器並在主控台輸出資料。
訂閱感測器
Step1. 設定 ROS2 環境變數,將 ROS_DISTRO 替換為你的 ROS2 發行版本(foxy、humble):
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 前往 node.js SUSIControl 範例客戶端路徑:
$ cd /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/rclnodejs_edge_data_client/
Step4. 執行 node.js SUSIControl 客戶端:
$ node example_SubscribeSensor.js "rclnodejs_SUSIControl_subscriber" "/adv/susicontrol"
Step5. 驗證接收到的資料:
[INFO] [1666244753.823296758] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/SUSIIoT Information/version, sv = 1.0.14327
[INFO] [1666244753.824233548] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/DiskInfo/Disk C Total Disk Space, v = 60039
[INFO] [1666244753.825679860] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/DiskInfo/Disk C Free Disk Space, v = 2573
[INFO] [1666244753.826547529] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Platform Information/Board manufacturer, sv = Advantech
[INFO] [1666244753.827426338] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Platform Information/Board name, sv = AIMB-285
[INFO] [1666244753.828303175] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Platform Information/BIOS revision, sv = V1.13
[INFO] [1666244753.829165104] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Platform Information/Driver version, sv = 4.0.14326
[INFO] [1666244753.830043506] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Platform Information/Library version, sv = 4.0.14326
[INFO] [1666244753.830895635] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/Vcore, v = 0.464
[INFO] [1666244753.831752533] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/3.3V, v = 3.36
[INFO] [1666244753.832659914] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/5V, v = 5.184
[INFO] [1666244753.833530130] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/12V, v = 12.021
[INFO] [1666244753.834384115] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/5V Standby, v = 5.216
[INFO] [1666244753.835268840] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Voltage/CMOS Battery, v = 3.152
[INFO] [1666244753.836147029] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Fan Speed/CPU, v = 0
[INFO] [1666244753.837019121] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Fan Speed/System, v = 2528
[INFO] [1666244753.837897563] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Hardware Monitor/Temperature/CPU, v = 34.7
[INFO] [1666244753.838757469] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO05/Dir, bv = true
[INFO] [1666244753.839612342] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO05/Level, bv = true
[INFO] [1666244753.841073336] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO00/Level, bv = true
[INFO] [1666244753.841963148] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO02/Level, bv = true
[INFO] [1666244753.842830913] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO01/Dir, bv = true
[INFO] [1666244753.843763644] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO03/Dir, bv = true
[INFO] [1666244753.844590639] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO03/Level, bv = true
[INFO] [1666244753.845344403] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO04/Dir, bv = true
[INFO] [1666244753.846105225] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO04/Level, bv = true
[INFO] [1666244753.846631442] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO06/Dir, bv = true
[INFO] [1666244753.847148533] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO06/Level, bv = true
[INFO] [1666244753.847914130] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO07/Dir, bv = true
[INFO] [1666244753.848709254] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/GPIO/GPIO07/Level, bv = true
[INFO] [1666244753.849491291] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Backlight/Backlight 1/Brightness, v = 255
[INFO] [1666244753.850278964] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Backlight/Backlight 1/Frequency, v = 18780
[INFO] [1666244753.851031430] [rclnodejs_SUSIControl_subscriber]: Data: sensor = SUSIControl/Backlight/Backlight 1/Polarity, bv = false
設定感測器
本節說明如何透過設定動作(set action)來修改 SUSI 節點資料。要執行此範例,你的裝置需要支援可寫入的感測器(由 SUSI driver 提供)。
Step1. 設定 ROS2 環境變數,將 ROS_DISTRO 替換為你的 ROS2 發行版本(foxy、humble):
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node ROS 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 前往 node.js SUSIControl 範例客戶端路徑:
$ cd /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/rclnodejs_edge_data_client/
Step4. 執行 SUSIControl 設定感測器範例::
指令:
node example_SetSensor.js [node name] [action] [sensor] [type] [value]
範例:
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO00/Dir" "bv" false
Step5. 接收結果:
[INFO] [1665541698.282173185] [adv.SUSIControl_Client]: Waiting for action server...
[INFO] [1665541698.317823807] [adv.SUSIControl_Client]: Sending goal request...
[INFO] [1665541698.350790289] [adv.SUSIControl_Client]: Received feedback: status = {"status":200,"sensor":"SUSIControl/GPIO/GPIO00/Dir","info":"Success","ts":1665541699007}
[INFO] [1665541698.389403371] [adv.SUSIControl_Client]: Goal accepted
[INFO] [1665541698.849897490] [adv.SUSIControl_Client]: Goal suceeded with result: 202
使用案例:EPC-R3720 GPIO 使用
此案例示範如何進行 EPC-R3720 GPIO 的設定與使用。
- GPIO 腳位定義:

- GPIO 對應表:
注意: GPIO2 和 GPIO4 未連接到 D-sub 接頭
- 硬體設定:
在此示範中,我們將進行 DO 到 DI 的迴路測試。在開始以下步驟前,需要先將 DO 與 DI 進行接線:
DO1 (GPIO6) --- DI1 (GPIO5)
DO2 (GPIO8) --- DI2 (GPIO7)
DO3 (GPIO10) --- DI3 (GPIO9)
DO4 (GPIO12) --- DI4 (GPIO11)
- 步驟:
Step1. 設定 ROS2 環境變數:
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 的 ROS 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 前往 node.js SUSIControl 範例客戶端路徑:
$ cd /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/rclnodejs_edge_data_client/
Step4. 將 GPIO6、GPIO8、GPIO10 和 GPIO12 設定為輸出腳位:
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO6/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO8/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO10/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO12/Dir" "bv" false
Step5. 將 GPIO5、GPIO7、GPIO9 和 GPIO11 設定為輸入腳位:
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO5/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO7/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO9/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO11/Dir" "bv" true
Step6. 將 GPIO6、GPIO8、GPIO10 和 GPIO12 的輸出 Level 設為 1(高電位):
當 GPIO6、GPIO8、GPIO10 和 GPIO12 被設定為輸出腳位後,即可透過 "adv_susicontrol_set" 指令將其 Level 設為 true/false。
注意:請勿對 GPIO5、GPIO7、GPIO9 和 GPIO11 設定數值,因為這些腳位被設定為輸入腳位,不允許進行 set 操作。
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO6/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO8/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO10/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO12/Level" "bv" true
Step7. 執行 node.js SUSIControl 客戶端:
$ node example_SubscribeSensor.js "rclnodejs_SUSIControl_subscriber" "/adv/susicontrol"
Step8. 驗證接收到的資料:
You have entered arguments:
node name: rclnodejs_SUSIControl_subscriber
message topic: /adv/susicontrol
----------------------------------------------
Data: sensor = "SUSIControl/GPIO/GPIO5/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO5/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO6/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO6/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO7/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO7/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO8/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO8/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO9/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO9/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO10/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO10/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO11/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO11/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO12/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO12/Level", v = 1.00
使用案例:MIO-5375 GPIO 使用
此案例示範如何進行 MIO-5375 GPIO 的設定與使用。
- GPIO 腳位定義:

- GPIO 線材定義:
- GPIO 對應表:
注意: 所有 GPIO 方向皆可設定。
- 硬體設定:
在此示範中,我們將進行 DO 到 DI 的迴路測試。在開始以下步驟前,需要先將 DO 與 DI 進行接線:
DO1 (GPIO00) --- DI1 (GPIO04)
DO2 (GPIO01) --- DI2 (GPIO05)
DO3 (GPIO02) --- DI3 (GPIO06)
DO4 (GPIO03) --- DI4 (GPIO07)
- 步驟:
Step1. 設定 ROS2 環境變數:
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 前往 node.js SUSIControl 範例客戶端路徑:
$ cd /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/rclnodejs_edge_data_client/
Step4. 將 GPIO00、GPIO01、GPIO02 和 GPIO03 設定為輸出腳位:
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO00/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO01/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO02/Dir" "bv" false
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO03/Dir" "bv" false
Step5. 將 GPIO04、GPIO05、GPIO06 和 GPIO07 設定為輸入腳位:
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO04/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO05/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO06/Dir" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO07/Dir" "bv" true
Step6. 將 GPIO00、GPIO01、GPIO02 和 GPIO03 的輸出 Level 設為 1(高電位):
當 GPIO00、GPIO01、GPIO02 和 GPIO03 被設定為輸出腳位後,即可透過 "adv_susicontrol_set" 指令將其 Level 設為 true(高電位)。
**注意:**請勿對 GPIO04、GPIO05、GPIO06 和 GPIO07 設定數值,因為這些腳位被設定為輸入腳位,不允許進行 set 操作。
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO00/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO01/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO02/Level" "bv" true
$ node example_SetSensor.js "rclnodejs_SUSIControl_setter" "adv_susicontrol_set" "SUSIControl/GPIO/GPIO03/Level" "bv" true
Step7. 執行 node.js SUSIControl 客戶端:
$ node example_SubscribeSensor.js "rclnodejs_SUSIControl_subscriber" "/adv/susicontrol"
Step8. 驗證接收到的資料:
You have entered arguments:
node name: rclnodejs_SUSIControl_subscriber
message topic: /adv/susicontrol
----------------------------------------------
Data: sensor = "SUSIControl/GPIO/GPIO00/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO00/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO01/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO01/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO02/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO02/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO03/Dir", v = 0.00
Data: sensor = "SUSIControl/GPIO/GPIO03/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO04/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO04/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO05/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO05/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO06/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO06/Level", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO07/Dir", v = 1.00
Data: sensor = "SUSIControl/GPIO/GPIO07/Level", v = 1.00
Python
程式 rclpy_edge_data_client 是一個 Python 客戶端範例,用於幫助使用者了解如何使用 rclpy 訂閱 SUSIControl 節點的資料。請依照以下步驟執行程式,當程式啟動後,會訂閱 OPCUAClient 節點的感測器並在主控台輸出資料。
步驟 - 訂閱感測器
Step1. 設定 ROS2 環境變數,將 ROS_DISTRO 替換為你的 ROS2 發行版本(foxy、humble):
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 設定 SUSIControl 環境變數:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/install/local_setup.bash
Step4. 執行 Python SUSIControl 範例客戶端:
$ ros2 run rclpy_edge_data_client listener "rclcpp_SUSIControl_subscriber" "/adv/susicontrol"
Step5. 驗證接收到的資料:
[INFO] [1668419166.970557368] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/Vcore", v = 1.13
[INFO] [1668419166.971275797] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/3.3V", v = 3.36
[INFO] [1668419166.971889153] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/5V", v = 5.22
[INFO] [1668419166.972484995] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/12V", v = 12.13
[INFO] [1668419166.973073717] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/5V Standby", v = 5.22
[INFO] [1668419166.973724029] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/CMOS Battery", v = 3.15
[INFO] [1668419166.974310688] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Voltage/VCC3", v = 3.34
[INFO] [1668419166.974895174] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Temperature/CPU", v = 43.20
[INFO] [1668419166.975476661] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Temperature/System", v = 36.50
[INFO] [1668419166.976056322] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Fan Speed/CPU", v = 0.00
[INFO] [1668419166.976637793] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Fan Speed/System", v = 2513.00
[INFO] [1668419166.977217676] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Hardware Monitor/Fan Speed/System 2", v = 2410.00
[INFO] [1668419166.977840176] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/DiskInfo/Disk C Total Disk Space", v = 60039.00
[INFO] [1668419166.978420960] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/DiskInfo/Disk C Free Disk Space", v = 1482.00
[INFO] [1668419166.979005895] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Platform Information/Board manufacturer", sv = "Advantech"
[INFO] [1668419166.979585125] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Platform Information/Board name", sv = "AIMB-285"
[INFO] [1668419166.980164289] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Platform Information/BIOS revision", sv = "V1.13"
[INFO] [1668419166.980741273] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Platform Information/Driver version", sv = "4.0.14326"
[INFO] [1668419166.981320076] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Platform Information/Library version", sv = "4.0.14326"
[INFO] [1668419166.981936635] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO00/Dir", bv = False
[INFO] [1668419166.982513742] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO00/Level", bv = False
[INFO] [1668419166.983092131] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO04/Dir", bv = True
[INFO] [1668419166.983668132] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO04/Level", bv = True
[INFO] [1668419166.984246338] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO02/Dir", bv = True
[INFO] [1668419166.984820603] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO02/Level", bv = True
[INFO] [1668419166.985397629] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO01/Dir", bv = True
[INFO] [1668419166.986005697] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO01/Level", bv = True
[INFO] [1668419166.986585734] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO03/Dir", bv = True
[INFO] [1668419166.987160259] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO03/Level", bv = True
[INFO] [1668419166.987738015] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO05/Dir", bv = True
[INFO] [1668419166.988313746] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO05/Level", bv = True
[INFO] [1668419166.988890908] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO06/Dir", bv = True
[INFO] [1668419166.989482096] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO06/Level", bv = True
[INFO] [1668419166.990074224] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO07/Dir", bv = True
[INFO] [1668419166.990648950] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/GPIO/GPIO07/Level", bv = True
[INFO] [1668419166.991224271] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Backlight/Backlight 1/Brightness", v = 255.00
[INFO] [1668419166.991803378] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Backlight/Backlight 1/Frequency", v = 18780.00
[INFO] [1668419166.992393882] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/Backlight/Backlight 1/Polarity", bv = False
[INFO] [1668419166.992984235] [rclpy_SUSIControl_subscriber]: Data: sensor = "SUSIControl/SUSIIoT Information/version", sv = "1.0.14327"
C++
程式 rclcpp_edge_data_client 是一個 C++ 範例,用於幫助使用者了解如何使用 rclcpp 訂閱 SUSI 節點的資料。請依照以下步驟執行程式,當程式啟動後,會訂閱 SUSI 節點的感測器並在主控台輸出資料。
步驟 - 訂閱感測器
Step1. 設定 ROS2 環境變數,將 ROS_DISTRO 替換為你的 ROS2 發行版本(foxy、humble):
$ source /opt/ros/${ROS_DISTRO}/setup.bash
Step2. 設定 SUSI Node 訊息:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/include/edge-converter-ros2/adv_msgs/install/local_setup.bash
Step3. 設定 SUSIControl 節點環境變數:
$ source /usr/local/Advantech/ros/${ROS_DISTRO}/sample_code/edge-data-client/install/local_setup.bash
Step4. 執行 C++ SUSIControl 範例客戶端:
$ ros2 run rclcpp_edge_data_client listener "rclcpp_SUSIControl_subscriber" "/adv/susicontrol"
Step5. 驗證接收到的資料:
[INFO] [1665992194.487803681] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/SUSIIoT Information/version', sv = '1.0.14327'
[INFO] [1665992194.488662535] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/DiskInfo/Disk C Total Disk Space', v = 60039.00
[INFO] [1665992194.489943911] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/DiskInfo/Disk C Free Disk Space', v = 2282.00
[INFO] [1665992194.490802091] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Platform Information/Board manufacturer', sv = 'Advantech'
[INFO] [1665992194.490963569] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Platform Information/Board name', sv = 'AIMB-285'
[INFO] [1665992194.491036637] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Platform Information/BIOS revision', sv = 'V1.13'
[INFO] [1665992194.491086609] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Platform Information/Driver version', sv = '4.0.14326'
[INFO] [1665992194.491176944] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Platform Information/Library version', sv = '4.0.14326'
[INFO] [1665992194.491815332] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/Vcore', v = 0.29
[INFO] [1665992194.492036608] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/3.3V', v = 3.36
[INFO] [1665992194.492213936] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/5V', v = 5.22
[INFO] [1665992194.492377116] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/12V', v = 12.18
[INFO] [1665992194.492529694] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/5V Standby', v = 5.22
[INFO] [1665992194.492846390] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/CMOS Battery', v = 3.15
[INFO] [1665992194.492928825] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Voltage/VCC3', v = 3.34
[INFO] [1665992194.493060224] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Fan Speed/CPU', v = 0.00
[INFO] [1665992194.493217407] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Fan Speed/System', v = 2556.00
[INFO] [1665992194.493377706] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Fan Speed/System 2', v = 2419.00
[INFO] [1665992194.493532012] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Temperature/CPU', v = 35.00
[INFO] [1665992194.493736784] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Hardware Monitor/Temperature/System', v = 32.50
[INFO] [1665992194.493923784] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO05/Dir', bv = true
[INFO] [1665992194.494074865] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO05/Level', bv = true
[INFO] [1665992194.494192822] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO00/Dir', bv = true
[INFO] [1665992194.494377938] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO00/Level', bv = true
[INFO] [1665992194.494536223] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO02/Dir', bv = true
[INFO] [1665992194.494715595] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO02/Level', bv = true
[INFO] [1665992194.494872167] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO01/Dir', bv = true
[INFO] [1665992194.495035704] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO01/Level', bv = true
[INFO] [1665992194.495239010] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO03/Dir', bv = true
[INFO] [1665992194.495405399] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO03/Level', bv = true
[INFO] [1665992194.495561419] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO04/Dir', bv = true
[INFO] [1665992194.495740410] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO04/Level', bv = true
[INFO] [1665992194.495901148] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO06/Dir', bv = true
[INFO] [1665992194.496102220] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO06/Level', bv = true
[INFO] [1665992194.496270253] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO07/Dir', bv = true
[INFO] [1665992194.496458663] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/GPIO/GPIO07/Level', bv = true
[INFO] [1665992194.496639251] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Backlight/Backlight 1/Brightness', v = 255.00
[INFO] [1665992194.496767970] [rclcpp_SUSIControl_subscriber]: Data: sensor = 'SUSIControl/Backlight/Backlight 1/Frequency', v = 18780.00
[INFO] [1665992194.496951618] [rclcpp_SUSIontrol_subscriber]: Data: sensor = 'SUSIControl/Backlight/Backlight 1/Polarity', bv = false