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): 允许客户端发现服务器上的可用资源,并支持基于 hrefctrtobs 等参数的过滤。
    • 消息交换模式:
      • 同步模式: 客户端发送请求后等待服务器响应。
      • 异步模式 (--async): 客户端发送请求后不等待服务器响应,继续执行其他操作。
    • 消息类型:
      • 可确认消息 (Confirmable): 需要服务器确认的可靠消息。
      • 不可确认消息 (Non-Confirmable): 不需要服务器确认的消息。
  • 用户友好性:

    • TAB 自动补全: 支持命令和参数的自动补全,提高使用效率。
    • 详细帮助文档: 输入 help 可查看所有可用命令及其使用说明。
  • 安全性:

    • 支持可插拔的密钥/信任存储和凭证管理,确保与服务器通信的安全性。
  • 集成与扩展:

    • 基于 Spring ShellCalifornium (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.mzph.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 请求…