ThingsKit物联网平台模拟CoAP设备接入

使用Java模拟客户端实践CoAP

准备工作

  • IDEA开发工具【IntelliJ IDEA 2023.1.1 (Community Edition)】
  • JDK11及以上
  • MAVEN【一般IDEA已经集成】(有最好,不需要手动下载jar引入,没有的话手动引入)

PS: 【Community Edition】教育版免费
ThingsKit物联网平台模拟CoAP设备接入_第1张图片
PS:在页面最下面
ThingsKit物联网平台模拟CoAP设备接入_第2张图片

CoAP核心包

  • californium-core.jar : 包括CoAP核心部分
  • element-connector.jar 包括适用于UDP和DTLS的java套接字抽象层
  • scandium.jar: 包括DTLS

    创建项目

  • Language- Java。
  • Build system- Maven。
  • JDK- JDK_version_11.XX.XX。

效果如下:
ThingsKit物联网平台模拟CoAP设备接入_第3张图片
单击“Create”;创建成功如下:
ThingsKit物联网平台模拟CoAP设备接入_第4张图片

准备代码

pom.xml代码中加入依赖包
代码块,放在之下


  
    org.eclipse.californium
    californium-core
    2.0.0-M7
  
  
    org.eclipse.californium
    element-connector
    2.0.0-M7
  
  
    org.eclipse.californium
    scandium
    2.0.0-M7
  

效果如下:
ThingsKit物联网平台模拟CoAP设备接入_第5张图片
依赖包配置文件加入之后;执行一下install下载依赖包;效果如下:
ThingsKit物联网平台模拟CoAP设备接入_第6张图片
Main.java中;替换所以代码

package org.example;

import org.eclipse.californium.core.CoapClient;
import org.eclipse.californium.core.CoapResponse;
import org.eclipse.californium.core.Utils;
import org.eclipse.californium.core.coap.MediaTypeRegistry;

import java.net.URI;
import java.net.URISyntaxException;

public class Main {
    public static void main(String[] args) throws URISyntaxException, InterruptedException {
        //访问令牌-与平台端保持一致
        String ACCESS_TOKEN = "Za3E3cfKZmXV5eBOzCRW";
        //服务器IP地址,填上你的IP
        String ip = "101.133.***.**";
        //遥测数据上传接口,注意默认端口为5683
        String url = "coap://" + ip + ":5683/api/v1/" + ACCESS_TOKEN + "/telemetry";

        //创建一个资源请求
        URI uri = new URI(url);
        CoapClient client = new CoapClient(uri);

        //POST请求
        CoapResponse response;

        //支持数据格式是{"key1":"value1", "key2":"value2"}
        String payload = "{\"temp\":\"21.5\", \"wet\":\"37.5\"}";
        while (true) {
            //每隔5秒循环发送
            Thread.currentThread().sleep(5000);
            //只支持POST请求,切为【JSON格式】
            response = client.post(payload, MediaTypeRegistry.APPLICATION_JSON);
            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));
            }
        }
    }
}

文章来源(首发地址):ThingsKit物联网平台

你可能感兴趣的:(物联网)