CoAP Shell 筆記

CoAP Shell 筆記

1. 概述

CoAP (Constrained Application Protocol)?是一種專為物聯網?(IoT)?中資源受限的節點和網絡設計的?RESTful?Web?傳輸協議。CoAP Shell?是一個基于命令行的交互式工具,用于與支持?CoAP?的服務器進行交互。

2. 主要功能

  • 協議支持:

    • 支持?coap:?和?coaps:?協議(分別對應?UDP?和?DTLS?傳輸)。
    • 提供?DTLS?會話管理,確保數據傳輸的安全性。
  • CoAP 方法:

    • 支持標準的?CoAP?方法:
      • GET:?獲取資源
      • PUT:?更新資源
      • POST:?創建資源
      • DELETE:?刪除資源
  • 高級功能:

    • 資源觀察 (Observing):?允許客戶端訂閱資源的變化,服務器會在資源發生變化時通知客戶端。
    • 資源發現 (Discovery):?允許客戶端發現服務器上的可用資源,并支持基于?href,?ct,?rt,?obs?等參數的過濾。
    • 消息交換模式:
      • 同步模式:?客戶端發送請求后等待服務器響應。
      • 異步模式 (--async):?客戶端發送請求后不等待服務器響應,繼續執行其他操作。
    • 消息類型:
      • 可確認消息 (Confirmable):?需要服務器確認的可靠消息。
      • 不可確認消息 (Non-Confirmable):?不需要服務器確認的消息。
  • 用戶友好性:

    • TAB 自動補全:?支持命令和參數的自動補全,提高使用效率。
    • 詳細幫助文檔:?輸入?help?可查看所有可用命令及其使用說明。
  • 安全性:

    • 支持可插拔的密鑰/信任存儲和憑證管理,確保與服務器通信的安全性。
  • 集成與擴展:

    • 基于?Spring Shell,?Californium (Cf)?和?Scandium (Sc)?項目構建。
    • 作為?SpringBoot?應用打包成單個可執行的?JAR?文件,可在任何?Java?8+?環境中運行。
  • IKEA TR?DFRI 網關支持:

    • 提供對?IKEA?TR?DFRI?智能照明系統的基本支持,包括:
      • 注冊新賬戶并生成預共享密鑰?(PSK)。
      • 列出連接的設備及其狀態。
      • 控制設備開關,例如打開或關閉燈泡。
      • 使用?CoAP?的?PUT?方法發送?JSON?負載來控制設備屬性,例如設置?5850?屬性為?1?打開燈泡,設置為?0?關閉燈泡。

3. 使用指南

3.1 快速啟動

1.獲取 CoAP Shell:

  • 下載預構建的?coap-shell.jar?文件,或按照下文說明自行構建。

2.啟動 CoAP Shell:

 
java -jar ./coap-shell-1.1.1.jar
  • 啟動后,會出現類似以下的提示符:
     
      _____     ___   ___     ______       ____/ ___/__  / _ | / _ \   / __/ /  ___ / / /
    / /__/ _ \/ __ |/ ___/  _\ \/ _ \/ -_) / /
    \___/\___/_/ |_/_/     /___/_//_/\__/_/_/
    CoAP Shell (v1.1.1)
    For assistance hit TAB or type "help".
    server-unknown:>
    

3.連接到 CoAP 服務器:

 
server-unknown:>connect coap://californium.eclipse.org
available
coap://californium.eclipse.org/:>
  • 常見的?CoAP?服務器地址示例:
    • coap://californium.eclipse.org/
    • coap://coap.me
    3.2 常用命令
    • 資源發現:

       
      coap://californium.eclipse.org/:>discover --query href=/*
      
      • 該命令會列出服務器上所有可用資源,并顯示其路徑、類型、內容類型、接口、大小和可觀察性等信息。
    • 獲取資源:

       
      coap://californium.eclipse.org/:>get /multi-format --accept application/xml
      
      • 該命令獲取指定路徑的資源,并指定接受的內容類型為?application/xml
    • 控制 IKEA TR?DFRI 設備:

      1.

      生成預共享密鑰 (PSK):

       
      server-unknown:>ikea gateway key --ip 192.168.178.151 --identity myIkeaGatewayIdentity --security-code <Gateway Code Label>
      
      • 替換?<Gateway Code Label>?為網關?背面的安全碼。
      • 該命令會返回生成的?IDENTITY?和?PRE_SHARED_KEY,需要妥善保存。
      2.

      連接到 IKEA 網關:

       
      server-unknown:>connect coaps://192.168.178.151:5684 --identity myIkeaGatewayIdentity --secret X5xyYM41qFS7vN10
      available
      coaps://192.168.178.151:5684:>
      
      • 替換?192.168.178.151?為網關的?IP?地址。
      3.

      列出連接的設備:

       
      coaps://192.168.178.151:5684:>ikea device list
      
      • 該命令會列出所有連接的設備及其狀態,例如燈泡的開關狀態。
      4.

      控制設備開關:

      • 打開燈泡:
         
        coaps://192.168.178.151:5684:>ikea turn on --instance 65539
        
      • 關閉燈泡:
         
        coaps://192.168.178.151:5684:>ikea turn off --instance 65539
        
      • 替換?65539?為目標設備的實例?ID。
      5.

      使用 PUT 方法控制設備屬性:

      • 打開燈泡:
         
        coaps://192.168.178.151:5684:>put //15001/65539 --payload '{"3311":[{"5850":1}]}'
        
      • 關閉燈泡:
         
        coaps://192.168.178.151:5684:>put //15001/65539 --payload '{"3311":[{"5850":0}]}'
        
      • 這里的?//15001/65539?是設備的?URI?模板,15001?是設備對象?ID,65539?是設備實例?ID。

      4. 注意事項

      • DTLS 會話過期:?如果出現?org.eclipse.californium.elements.EndpointMismatchException?錯誤,說明?DTLS?會話已過期,需要重新連接。
      • 日志調試:?啟動?CoAP?Shell?時,可以使用?--logging.level?參數來設置日志級別,例如:
         
        java -jar ./target/coap-shell-1.1.1-SNAPSHOT.jar --logging.level.org.eclipse.californium=DEBUG
        
        • 這對于調試?CoAP?請求消息和?DTLS?交互非常有用。

      5. 總結

      CoAP?Shell?是一個功能強大的工具,簡化了與?CoAP?服務器的交互過程。它適用于開發、測試和調試物聯網應用,特別是那些基于?CoAP?協議的設備和服務。

      本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
      如若轉載,請注明出處:http://www.pswp.cn/diannao/76267.shtml
      繁體地址,請注明出處:http://hk.pswp.cn/diannao/76267.shtml
      英文地址,請注明出處:http://en.pswp.cn/diannao/76267.shtml

      如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

      相關文章

      【最新】探索CFD的未來:從OpenFOAM到深度學習,全面解析計算流體力學的頂級資源與前沿技術

      計算流體力學(CFD)作為現代工程與科學研究的核心工具,正以前所未有的速度邁向智能化與多物理場耦合的新時代。本文全面梳理了在線學習CFD的頂級資源,涵蓋了從傳統數值模擬到深度學習驅動的物理信息模型的廣泛領域,旨在為研究者、工程師和學生提供一站式參考指南。內容分為…

      [leetcode]2492. 兩個城市間路徑的最小分數(并查集 排序后建邊)

      題目鏈接 題意 給定一個 n n n個點 m m m條邊的無向圖 每條邊有邊權 求1-n的路徑中最小的邊權是多少 每條路可以重復走 思路 把邊按邊權降序排序 用并查集維護連通性 遍歷每條邊 每次合并邊的起點和終點 如果1和n聯通 并且這條邊在1和n的這個連通塊中 就對ans取min Code…

      Windows中IDEA2024.1的安裝和使用

      如果你也喜歡&#xff0c;記得一鍵三連啊 一、卸載 二、安裝 三、注冊 1、打開Crack文件&#xff0c;直接雙擊 “安裝.bat”&#xff0c;否則可能安裝會出錯&#xff01;&#xff01; 2、選擇【Activation code】&#xff08;不要關閉該界面繼續后面的步驟&#xff09;。 …

      【C#】構造協議幀通過串口下發

      構造一個“協議幀”&#xff0c;打包串口/網絡通信幀頭部結構的核心部分 &#x1f527; 代碼&#xff1a; List<byte> frame new List<byte>();// 1. 固定幀頭 frame.AddRange(BitConverter.GetBytes(0x0130)); // 幀頭 (4B) frame.AddRange(BitConverter…

      04_SQL概述及DDL

      文章目錄 一、關于SQL1.1、SQL概述1.2、SQL分類 二、數據庫操作2.1、查看數據庫2.2、切換數據庫2.3、查詢當前使用的數據庫2.4、創建數據庫2.5、查看數據庫創建信息2.6、修改數據庫2.7、刪除數據庫 三、表的操作3.1、數據類型3.1.1、數值類型3.1.2、字符串類型3.1.3、日期時間類…

      HCIA-數據通信datacom認證

      文章目錄 一、數據通信簡介1.1 標準協議1.2 數據傳輸過程 二、通用路由平臺VRP2.1 VRP簡介2.2 命令行基礎 三 、網絡層協議IP3.1 數據封裝3.2 數據包傳輸2.3 IP地址2.4 子網劃分2.5 ICMP 四、IP路由基礎4.1 路由概述4.2 路由表4.3 路由轉發4.4 靜態路由4.5 動態路由4.6 路由高級…

      fast_pow(),c語言冪函數

      double fast_pow(double a, int n) { double res 1.0; while (n > 0) { if (n & 1) res * a; // 如果當前位是1&#xff0c;累乘 a * a; // 平方 n >> 1; // 右移一位&#xff08;相當于 n / 2&…

      OpenBMC:BmcWeb 處理http請求2 查找路由對象

      OpenBMC:BmcWeb 處理http請求1 生成Request和AsyncResp對象_bmc web-CSDN博客 當接收到http請求,并且完成解析后,調用了App::handle處理請求 而App::handle又調用了router.handle(req, asyncResp);來處理請求 1.Router::handle void handle(const std::shared_ptr<Requ…

      [Mac]利用hexo-theme-fluid美化個人博客

      接上文,使用Fluid美化個人博客 文章目錄 一、安裝hexo-theme-fluid安裝依賴指定主題創建「關于頁」效果展示 二、修改個性化配置1. 修改網站設置2.修改文章路徑顯示3.體驗分類和標簽4.左上角博客名稱修改5.修改背景圖片6.修改關于界面 歡迎大家參觀 一、安裝hexo-theme-fluid 參…

      深入理解二叉樹、B樹與B+樹:原理、應用與實現

      文章目錄 引言一、二叉樹&#xff1a;基礎而強大的結構基本概念特性分析Java實現應用場景 二、B樹&#xff1a;適合外存的多路平衡樹基本概念關鍵特性查詢流程示例Java簡化實現典型應用 三、B樹&#xff1a;數據庫索引的首選核心改進優勢分析范圍查詢示例Java簡化實現實際應用 …

      8.4考研408簡單選擇排序與堆排序知識點深度解析

      考研408「簡單選擇排序與堆排序」知識點全解析 一、簡單選擇排序 1.1 定義與核心思想 簡單選擇排序(Selection Sort)是一種選擇排序算法,其核心思想是: 每趟選擇:從待排序序列中選擇最小(或最大)的元素,與當前位置的元素交換。逐步構建有序序列:經過 n ? 1 n-1

      為什么需要開源成分分析?庫博同源分析工具介紹

      在當今的軟件開發世界中&#xff0c;開源組件已經成為不可或缺的一部分。無論是加速開發進程&#xff0c;還是降低開發成本&#xff0c;開源組件都為我們帶來了巨大的便利。然而&#xff0c;隨著開源組件的廣泛使用&#xff0c;安全風險也隨之而來。你是否曾擔心過&#xff0c;…

      ros2 humble無法識別頭文件<rclcpp/rclcpp.hpp>

      首先在C/C配置中設置路徑&#xff1a; 可以編輯文件.vscode/c_cpp_properties.json ${workspaceFolder}/**/opt/ros/humble/include/**編譯配置 確保配置好了CMakeLists.txt文件。 colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDSON這樣會在目錄下生成compile_com…

      常用的排序算法及對比

      1. 選擇排序&#xff08;Selection Sort&#xff09; 算法思想與理論推導 基本思想&#xff1a; 每次從待排序數組中選擇最小&#xff08;或最大&#xff09;的元素&#xff0c;將它與當前序列的起始位置交換&#xff0c;逐步將整個數組排序。 推導過程&#xff1a; 設數組長…

      Linux基礎入門:從零開始掌握Linux命令行操作

      &#x1f64b;大家好&#xff01;我是毛毛張! &#x1f308;個人首頁&#xff1a; 神馬都會億點點的毛毛張 &#x1f388;有沒有覺得電影里的黑客&#x1f412;酷斃了&#xff1f;他們只用鍵盤?就能搞定一切。今天&#xff0c;毛毛張要帶你們體驗這種快感&#x1f600;&…

      OpenAI發布的《Addendum to GPT-4o System Card: Native image generation》文件的詳盡筆記

      Native_Image_Generation_System_Card 文件基本信息 文件名稱&#xff1a;《Addendum to GPT-4o System Card: Native image generation》發布機構&#xff1a;OpenAI發布日期&#xff1a;2025年3月25日主要內容&#xff1a;介紹GPT-4o模型中新增的原生圖像生成功能&#xff…

      5.02 WPF的 Combox、ListBox,slider、ProgressBar使用

      1. 關于Combox\ListBox使用&#xff1a; 1.1 內容綁定有兩種方法&#xff0c; 優先使用方法1&#xff0c;因為列表變化的時候&#xff0c;Combox會自動顯示新的內容。而方法2并不會實時更新。 方法1&#xff1a;使用DataContext this.comboBox1.DisplayMemberPath "na…

      《孟婆湯的SHA-256加密》

      點擊下面圖片帶您領略全新的嵌入式學習路線 &#x1f525;爆款熱榜 88萬閱讀 1.6萬收藏 文章目錄 **第一章&#xff1a;黃泉路上的數據風暴****第二章&#xff1a;堿基對的非對稱加密****第三章&#xff1a;RAFT協議暴動事件****第四章&#xff1a;靈魂分叉與硬重放****終章&…

      SpringBoot事務管理(四)

      記錄幾條SpringBoot事務管理中踩過的坑及解決辦法&#xff1a; 1. 自調用問題 問題描述 在同一個類中&#xff0c;一個非事務方法調用另一個有 Transactional 注解的事務方法&#xff0c;事務不會生效。因為 Spring 的事務管理是基于 AOP 代理實現的&#xff0c;自調用時不會…

      HTTP 1.1長連接問題

      在長連接問題上&#xff0c;HTTP 1.1與HTTP 1.0還是有所區別的。 下面一起來看看&#xff1a; HTTP 1.1 支持長連接&#xff08;PersistentConnection&#xff09;和請求的流水線&#xff08;Pipelining&#xff09;處理&#xff0c;在一個 TCP 連接上可以傳送多個 HTTP 請求…