CoAP Shell 笔记

news2025/4/14 15:19:22

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.coloradmin.cn/o/2325685.html

      如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

      相关文章

      回溯(子集型):分割回文串

      一、多维递归 -> 回溯 1.1&#xff1a;17. 电话号码的字母组合(力扣hot100&#xff09; 代码&#xff1a; mapping ["","", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv&qu…

      2022年蓝桥杯第十三届CC++大学B组真题及代码

      目录 1A&#xff1a;九进制转十进制 2B&#xff1a;顺子日期&#xff08;存在争议&#xff09; 3C&#xff1a;刷题统计 解析代码&#xff08;模拟&#xff09; 4D&#xff1a;修剪灌木 解析代码&#xff08;找规律&#xff09; 5E&#xff1a;X进制减法 解析代码1&…

      1.oracle修改配置文件

      1.找到oracle的安装路径 D:\app\baozi\product\11.2.0\dbhome_1\NETWORK\ADMIN &#xff0c;修改下面的两个文件。如果提示没有权限&#xff0c;可以先把这两个文件复制到桌面&#xff0c;修改完后&#xff0c;在复制回来。 2.查看自己电脑的主机名&#xff0c; 右击 - 此电脑 …

      通义万相2.1 你的视频创作之路

      通义万相2.1的全面介绍 一、核心功能与技术特点 通义万相2.1是阿里巴巴达摩院研发的多模态生成式AI模型&#xff0c;以视频生成为核心&#xff0c;同时支持图像、3D内容及中英文文字特效生成。其核心能力包括&#xff1a; 复杂动作与物理规律建模 能够稳定生成包含人体旋转、…

      Muduo网络库实现 [四] - Channel模块

      设计思路 具体来说每一个套接字都会对应一个 Channel 对象&#xff0c;用于对它的事件进行管理。可以对于描述符的监控事件在用户态更容易维护&#xff0c;以及触发事件后的操作流程更加的清晰 Channel模块是用于对一个描述符所需要监控的事件以及事件触发之后要执行的回调函…

      XSS 攻击(详细)

      目录 引言 一、XSS 攻击简介 二、XSS 攻击类型 1.反射型 XSS 2.存储型 XSS 3.基于 DOM 的 XSS 4.Self - XSS 三、XSS 攻击技巧 1.基本变形 2.事件处理程序 3.JS 伪协议 4.编码绕过 5.绕过长度限制 6.使用标签 四、XSS 攻击工具与平台 1.XSS 攻击平台 2.BEEF 五…

      《ZooKeeper Zab协议深度剖析:构建高可用分布式系统的基石》

      《ZooKeeper Zab协议深度剖析:构建高可用分布式系统的基石》 一、分布式协调的挑战与ZooKeeper的解决方案 1.1 分布式系统一致性难题 #mermaid-svg-iigak7YlgEw7o6lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-sv…

      OpenCV 图形API(6)将一个矩阵(或图像)与一个标量值相加的函数addC()

      操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 addC 函数将给定的标量值加到给定矩阵的每个元素上。该功能可以用矩阵表达式替换&#xff1a; dst src1 c \texttt{dst} \texttt{src1} \te…

      同步SVPWM调制策略的初步学习记录

      最近项目需要用到一些同步调制SVPWM相关的内容&#xff08;现在的我基本都是项目驱动了&#xff09;&#xff0c;因此对该内容进行一定的学习。 1 同步SVPWM调制的背景 我们熟知的一些知识是&#xff1a;SVPWM&#xff08;空间矢量脉宽调制&#xff09;是一种用于逆变器的调制…

      排序算法3-交换排序

      目录 1.常见排序算法 2.排序算法的预定函数 2.1交换函数 2.2测试算法运行时间的函数 2.3已经实现过的排序算法 3.交换排序的实现 3.1冒泡排序 3.2快速排序 3.2.1递归的快速排序 3.2.1.1hoare版本的排序 3.2.1.2挖坑法 3.2.1.3lomuto前后指针法 3.2.2非递归版本的快…

      【Qt】数据库管理

      数据库查询工具开发学习笔记 一、项目背景与目标 背景&#xff1a;频繁编写数据库查询语句&#xff0c;希望通过工具简化操作&#xff0c;提升效率。 二、总体设计思路 1. 架构设计 MVC模式&#xff1a;通过Qt控件实现视图&#xff08;UI&#xff09;&#xff0c;业务逻辑…

      Ant Design Vue 中的table表格高度塌陷,造成行与行不齐的问题

      前言&#xff1a; Ant Design Vue: 1.7.2 Vue2 less 问题描述&#xff1a; 在通过下拉框选择之后&#xff0c;在获取接口数据&#xff0c;第一列使用了fixed:left&#xff0c;就碰到了高度塌陷&#xff0c;查看元素的样式结果高度不一致&#xff0c;如&#x…

      【qt】文件类(QFile)

      很高兴你能看到这篇文章&#xff0c;同时我的语雀文档也更新了许多嵌入式系列的学习笔记希望能帮到你 &#xff1a; https://www.yuque.com/alive-m4b9n 目录 QFile 主要功能QFile 操作步骤QFile 其他常用函数案例分析及实现功能一实现&#xff1a;打开文件并显示功能二实现:另…

      3. 实战(一):Spring AI Trae ,助力开发微信小程序

      1、前言 前面介绍了Spring boot快速集成Spring AI实现简单的Chat聊天模式。今天立马来实战一番&#xff0c;通过Trae这个火爆全网的工具&#xff0c;来写一个微信小程序。照理说&#xff0c;我们只是极少量的编码应该就可以完成这项工作。开撸~ 2、需求描述 微信小程序实现一…

      UE5新材质系统效果Demo展示

      1、玉质材质&#xff0c;透明玻璃材质&#xff0c;不同透射和散射。 2、浅水地面&#xff0c;地面层&#xff0c;水层&#xff0c;地面湿度&#xff0c;水面高度&#xff0c;水下扰动&#xff0c;水下浇洒&#xff0c;水下折射 Substrate-Water Substrate-Water-CodeV2

      wps 怎么显示隐藏文字

      wps 怎么显示隐藏文字 》文件》选项》视图》勾选“隐藏文字” wps怎么设置隐藏文字 wps怎么设置隐藏文字

      CXL UIO Direct P2P学习

      前言&#xff1a; 在CXL协议中&#xff0c;UIO&#xff08;Unordered Input/Output&#xff09; 是一种支持设备间直接通信&#xff08;Peer-to-Peer, P2P&#xff09;的机制&#xff0c;旨在绕过主机CPU或内存的干预&#xff0c;降低延迟并提升效率。以下是UIO的核心概念及UI…

      leetcode138.随即链表的复制

      思路源于 【力扣hot100】【LeetCode 138】随机链表的复制&#xff5c;哈希表 采用一个哈希表&#xff0c;键值对为<原链表的结点&#xff0c;新链表的结点>&#xff0c;第一次遍历原链表结点时只创建新链表的结点&#xff0c;第二次遍历原链表结点时&#xff0c;通过键拿…

      《网络管理》实践环节01:OpenEuler22.03sp4安装zabbix6.2

      兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 1 环境 openEuler 22.03 LTSsp4PHP 8.0Apache 2Mysql 8.0zabbix6.2.4 表1-1 Zabbix网络规划&#xff08;用你们自己的特征网段规划&#xff09; 主机名 IP 功能 备注 zbx6svr 19…

      Opencv计算机视觉编程攻略-第四节 图直方图统计像素

      Opencv计算机视觉编程攻略-第四节 图直方图统计像素 1.计算图像直方图2.基于查找表修改图像3.直方图均衡化4.直方图反向投影进行内容查找5.用均值平移法查找目标6.比较直方图搜索相似图像7.用积分图统计图像 1.计算图像直方图 图像统计直方图的概念 图像统计直方图是一种用于描…