乐趣区

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

应用 Java 模仿客户端实际 CoAP

筹备工作

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

PS:【Community Edition】教育版收费

PS: 在页面最上面

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。

成果如下:

单击“Create”; 创立胜利如下:

筹备代码

pom.xml 代码中退出依赖包
代码块,放在之下

<dependencies>
  <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>
</dependencies>

成果如下:

依赖包配置文件退出之后;执行一下 install 下载依赖包;成果如下:

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 物联网平台

退出移动版