coap 协议与java api 和 nodeRed插件组合使用

时间:2024-03-25 20:51:19

一  java 编写 coap 客户端与服务端

概述:

CoAP是为物联网而生,短小精悍,它底层基于UDP协议的,其它具体参考百度百科,本例子是基于Californium框架。

1、先决条件
java环境

eclipse工具

Maven插件(有最好,不需要手动下载jar引入,没有的话手动引入)

2、下载Californium框架核心jar
californium-core.jar : 包括CoAP核心部分

element-connector.jar  包括适用于UDP和DTLS的java套接字抽象层

scandium.jar: 包括DTLS

<dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>californium-core</artifactId>
        <version>2.0.0-M7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>element-connector</artifactId>
        <version>2.0.0-M7</version>
    </dependency>
  <dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>scandium</artifactId>
        <version>2.0.0-M7</version>
    </dependency>

已经下载打包成集合:下载地址   (不能设置积分为0,尴尬了)

3、创建java工程或Maven工程,创建一个Server类
import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.coap.CoAP.ResponseCode;
import org.eclipse.californium.core.server.resources.CoapExchange;
 
public class HelloCoAPServer {
 
    public static void main(String[] args) {
        CoapServer server = new CoapServer();//主机为localhost 端口为默认端口5683
        server.add(new CoapResource("hello"){//创建一个资源为hello 请求格式为 主机:端口\hello
 
            @Override
            public void handleGET(CoapExchange exchange) { //重写处理GET请求的方法
                exchange.respond(ResponseCode.CONTENT, "Hello CoAP!");  
            }
            
        });
        server.add(new CoapResource("time"){ //创建一个资源为time 请求格式为 主机:端口\time
 
            @Override
            public void handleGET(CoapExchange exchange) {
                Date date = new Date();
                exchange.respond(ResponseCode.CONTENT,
                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
            }
            
        });
        server.start();
    }
}
4、创建一个客户端:
public class GETClient {
 
    public static void main(String[] args) throws URISyntaxException {
        URI uri = null;
        uri = new URI("localhost:5683/hello");  //创建一个资源请求hello资源,注意默认端口为5683
        CoapClient client = new CoapClient(uri);
        CoapResponse response = client.get();
        if(response !=null){
            System.out.println(response.getCode());  //打印请求状态码
            System.out.println(response.getOptions());  //选项参数
            System.out.println(response.getResponseText());  //获取内容文本信息
            System.out.println("\nAdvanced\n");    // 
            System.out.println(Utils.prettyPrint(response));  //打印格式良好的输出
        }
    }
}
5、测试
先运行HelloCoAPServer的main方法

然后运行GETClient的main方法

6、日志:
2.05
{"Content-Format":"text/plain"}
Hello CoAP!
 
Advanced
 
==[ CoAP Response ]============================================
MID    : 10763
Token  : [aab3ac5818d1e598]
Type   : ACK
Status : 2.05
Options: {"Content-Format":"text/plain"}
RTT    : 26 ms
Payload: 11 Bytes
---------------------------------------------------------------
Hello CoAP!
===============================================================

 

二 node-red安装node-red-contrib-coap

coap 协议与java api 和 nodeRed插件组合使用

 

coap 协议与java api 和 nodeRed插件组合使用

 

安装之后拖拽配置

coap 协议与java api 和 nodeRed插件组合使用

coap请求节点配置如下

coap 协议与java api 和 nodeRed插件组合使用

 

 

coap 服务端节点配置如下

coap 协议与java api 和 nodeRed插件组合使用

 

服务端响应节点配置如下

coap 协议与java api 和 nodeRed插件组合使用

可以自定义响应的格式