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: 删除资源
- 支持标准的 CoAP 方法:
-
高级功能:
- 资源观察 (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 关闭灯泡。
- 提供对 IKEA TRÅDFRI 智能照明系统的基本支持,包括:
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,需要妥善保存。
连接到 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 地址。
列出连接的设备:
coaps://192.168.178.151:5684:>ikea device list- 该命令会列出所有连接的设备及其状态,例如灯泡的开关状态。
控制设备开关:
- 打开灯泡:
coaps://192.168.178.151:5684:>ikea turn on --instance 65539 - 关闭灯泡:
coaps://192.168.178.151:5684:>ikea turn off --instance 65539 - 替换
65539为目标设备的实例 ID。
使用 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 协议的设备和服务。
相关文章:
CoAP Shell 笔记
CoAP Shell 笔记 1. 概述 CoAP (Constrained Application Protocol) 是一种专为物联网 (IoT) 中资源受限的节点和网络设计的 RESTful Web 传输协议。CoAP Shell 是一个基于命令行的交互式工具,用于与支持 CoAP 的服务器进行交互。 2. 主要功能 协议支持ÿ…...
回溯(子集型):分割回文串
一、多维递归 -> 回溯 1.1:17. 电话号码的字母组合(力扣hot100) 代码: mapping ["","", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv&qu…...
2022年蓝桥杯第十三届CC++大学B组真题及代码
目录 1A:九进制转十进制 2B:顺子日期(存在争议) 3C:刷题统计 解析代码(模拟) 4D:修剪灌木 解析代码(找规律) 5E:X进制减法 解析代码1&…...
1.oracle修改配置文件
1.找到oracle的安装路径 D:\app\baozi\product\11.2.0\dbhome_1\NETWORK\ADMIN ,修改下面的两个文件。如果提示没有权限,可以先把这两个文件复制到桌面,修改完后,在复制回来。 2.查看自己电脑的主机名, 右击 - 此电脑 …...
通义万相2.1 你的视频创作之路
通义万相2.1的全面介绍 一、核心功能与技术特点 通义万相2.1是阿里巴巴达摩院研发的多模态生成式AI模型,以视频生成为核心,同时支持图像、3D内容及中英文文字特效生成。其核心能力包括: 复杂动作与物理规律建模 能够稳定生成包含人体旋转、…...
Muduo网络库实现 [四] - Channel模块
设计思路 具体来说每一个套接字都会对应一个 Channel 对象,用于对它的事件进行管理。可以对于描述符的监控事件在用户态更容易维护,以及触发事件后的操作流程更加的清晰 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 五…...
K8s负载均衡全解析:从入门到实战的完整指南
Kubernetes(K8s)作为容器编排的标准,其负载均衡机制是构建高可用、高弹性应用的关键。本文将全面介绍K8s负载均衡的核心概念、实现方式及最佳实践,帮助开发者和运维人员构建稳定高效的云原生应用。 一、K8s负载均衡的基础概念 在Kubernetes生态系统中,负载均衡是指将工作负…...
《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()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 addC 函数将给定的标量值加到给定矩阵的每个元素上。该功能可以用矩阵表达式替换: dst src1 c \texttt{dst} \texttt{src1} \te…...
同步SVPWM调制策略的初步学习记录
最近项目需要用到一些同步调制SVPWM相关的内容(现在的我基本都是项目驱动了),因此对该内容进行一定的学习。 1 同步SVPWM调制的背景 我们熟知的一些知识是:SVPWM(空间矢量脉宽调制)是一种用于逆变器的调制…...
六十天Linux从0到项目搭建(第十五天)(程序替换、exec流程示意图、核心特性)
1 为什么要有程序替换? 程序替换(Process Replacement)是操作系统中一个关键机制,它的核心目的是:让一个正在运行的进程(通常是子进程)停止执行当前代码,转而加载并执行一个全新的程…...
排序算法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】数据库管理
数据库查询工具开发学习笔记 一、项目背景与目标 背景:频繁编写数据库查询语句,希望通过工具简化操作,提升效率。 二、总体设计思路 1. 架构设计 MVC模式:通过Qt控件实现视图(UI),业务逻辑…...
Ant Design Vue 中的table表格高度塌陷,造成行与行不齐的问题
前言: Ant Design Vue: 1.7.2 Vue2 less 问题描述: 在通过下拉框选择之后,在获取接口数据,第一列使用了fixed:left,就碰到了高度塌陷,查看元素的样式结果高度不一致,如&#x…...
面经-项目
项目 项目(重点)问题1:描述在网页中题目点击提交后到题目结果出现的一系列后台反应【1】如何获取到用户提交的代码的?【2】_1. 题目细节都有哪些?【2】_2. 题目信息怎么存储的?【3】负载均衡算法的实现?【4】oj_server怎么连接对应的compile_server(编译主机)的?【5】oj_…...
Win10安装Linux的三种方法
通过 Windows 子系统 for Linux(WSL)安装 启用 “适用于 Linux 的 Windows 子系统” 可选功能: 图形界面方式:在【设置 -> 更新与安全 -> 开发者选项】中开启【开发人员模式】;在【程序和功能 -> 启用或关闭…...
【qt】文件类(QFile)
很高兴你能看到这篇文章,同时我的语雀文档也更新了许多嵌入式系列的学习笔记希望能帮到你 : https://www.yuque.com/alive-m4b9n 目录 QFile 主要功能QFile 操作步骤QFile 其他常用函数案例分析及实现功能一实现:打开文件并显示功能二实现:另…...
力扣hot100——最长连续序列(哈希unordered_set)
题目链接:最长连续序列 1、错解:数组做哈希表(内存超出限制) int longestConsecutive(vector<int>& nums) {vector<bool> hash(20000000010, false);for(int i0; i<nums.size();i){hash[1000000000nums[i]]t…...
3. 实战(一):Spring AI Trae ,助力开发微信小程序
1、前言 前面介绍了Spring boot快速集成Spring AI实现简单的Chat聊天模式。今天立马来实战一番,通过Trae这个火爆全网的工具,来写一个微信小程序。照理说,我们只是极少量的编码应该就可以完成这项工作。开撸~ 2、需求描述 微信小程序实现一…...
MySQL高级语句深度解析与应用实践
一、窗口函数:数据分析的利器 1. 窗口函数基础概念 窗口函数(Window Function)是MySQL 8.0引入的强大特性,它可以在不减少行数的情况下对数据进行聚合计算和分析 SELECT employee_name,department,salary,RANK() OVER (PARTITION BY department ORDER…...
SSE服务器主动推送至浏览器客户端,让你不再需要websocket
Server-Sent Events(SSE)是一种服务器向客户端推送实时更新的技术,基于HTTP协议。客户端通过EventSource API来接收事件流,而服务器则保持一个长连接,持续发送数据。这与传统的请求-响应模式不同,允许服务器…...
UE5新材质系统效果Demo展示
1、玉质材质,透明玻璃材质,不同透射和散射。 2、浅水地面,地面层,水层,地面湿度,水面高度,水下扰动,水下浇洒,水下折射 Substrate-Water Substrate-Water-CodeV2...
wps 怎么显示隐藏文字
wps 怎么显示隐藏文字 》文件》选项》视图》勾选“隐藏文字” wps怎么设置隐藏文字 wps怎么设置隐藏文字...
解决 macOS (M1 Pro) 上使用 Vite 进行 Build 打包时 Node 进程内存溢出的问题
解决 macOS (M1 Pro) 上使用 Vite 进行 Build 打包时 Node 进程内存溢出的问题 在搭载 M1 Pro 芯片的 macOS 系统上,使用 Vite 进行项目构建(build)时,您可能会遇到 Node 进程内存溢出的错误。特别是在使用较新版本的 Node.js&am…...
页面重构过程中如何保证良好的跨浏览器一致性?
在页面重构的过程中,为了确保网页能够在不同的浏览器中呈现一致的效果,我们需要采取一系列措施来提高跨浏览器的一致性。以下是几个关键步骤和技术要点: 使用标准化的HTML和CSS:始终遵循最新的Web标准编写代码,例如采用…...
CXL UIO Direct P2P学习
前言: 在CXL协议中,UIO(Unordered Input/Output) 是一种支持设备间直接通信(Peer-to-Peer, P2P)的机制,旨在绕过主机CPU或内存的干预,降低延迟并提升效率。以下是UIO的核心概念及UI…...
leetcode138.随即链表的复制
思路源于 【力扣hot100】【LeetCode 138】随机链表的复制|哈希表 采用一个哈希表,键值对为<原链表的结点,新链表的结点>,第一次遍历原链表结点时只创建新链表的结点,第二次遍历原链表结点时,通过键拿…...
03_MySQL工具介绍
文章目录 一、Navicat for MySQL1.1、安装 二、SQLyog2.1、安装 多数时候使用SQL语句对数据库进行操作不是很方便,特别是在查询操作时,显示的内容不够直观,此时我们需要借助图形化工具对数据库进行操作。 操作MySQL常用的图形工具如下&#x…...
