精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot與Californium整合,實現物聯網設備低功耗通信系統

物聯網
CoAP是一種專門為物聯網設備設計的輕量級協議,特別適用于資源受限的環境。它通過簡單的二進制消息格式、高效的傳輸機制和RESTful架構,使得在低帶寬、高延遲和不可靠網絡條件下進行通信變得容易。

CoAP是一種專門為物聯網設備設計的輕量級協議,特別適用于資源受限的環境。它通過簡單的二進制消息格式、高效的傳輸機制和RESTful架構,使得在低帶寬、高延遲和不可靠網絡條件下進行通信變得容易。

哪些公司使用Californium?

  • Intel Corporation在其 IoT 平臺和開發工具中集成 Californium 以支持 CoAP 協議。
  • IBM利用 Californium 在其 IoT 和邊緣計算解決方案中實現高效的數據傳輸。
  • 西門子使用 Californium 在其 IoT 解決方案中實現低功耗設備的通信。
  • Bosch Rexroth利用 Californium 支持其工業 IoT 應用程序中的 CoAP 通信。
  • Infineon Technologies 在其嵌入式系統和 IoT 解決方案中集成 Californium 以支持 CoAP 協議。
  • 愛立信在其 IoT 平臺中使用 Californium 實現高效的設備間通信。
  • Texas Instruments Inc.提供基于 Californium 的開發套件和示例代碼,助力開發者構建 IoT 應用。
  • ABB Ltd.在其智能制造解決方案中利用 Californium 實現高效的數據交換和控制。
  • Cisco Systems, Inc.在其 IoT 平臺上使用 Californium 實現低延遲和可靠的設備通信。

Californium的特點

  • 輕量級: 適合資源受限的設備。
  • 可靠傳輸: 支持確認消息(CON)、非確認消息(NON)和重置消息(RST)。
  • 多播支持: 允許向一組設備發送請求。
  • 觀察機制: 客戶端可以訂閱資源變化,實時接收更新。
  • 安全性: 支持DTLS(Datagram Transport Layer Security)加密。
  • RESTful架構: 使用HTTP方法(GET, POST, PUT, DELETE),便于與現有Web服務集成。

Californium的核心組件

  • CoapClient: 用于創建CoAP客戶端,發送請求并處理響應。
  • CoapServer: 用于創建CoAP服務器,處理來自客戶端的請求。
  • CoapResource: 定義CoAP資源,處理特定路徑上的請求。
  • CoapExchange: 提供請求和響應的上下文,便于處理具體業務邏輯。

代碼實操

<!-- Spring Boot Web Dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Californium Spring Boot Starter -->
    <dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>californium-spring-boot-starter-server</artifactId>
        <version>2.6.0</version>
    </dependency>

    <!-- Spring Data JPA for database operations -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

application.properties

# MySQL 數據庫配置
spring.datasource.url=jdbc:mysql://localhost:3306/iot_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Hibernate 配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

Device實體類

package com.example.coapserver.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
publicclass Device {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; // 設備ID,自增主鍵
    private String deviceId; // 設備唯一標識符
    private String type; // 設備類型
    privatedouble temperature; // 溫度數據
    privateboolean active; // 設備是否激活

    // Getter 和 Setter 方法

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getTemperature() {
        return temperature;
    }

    public void setTemperature(double temperature) {
        this.temperature = temperature;
    }

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }
}

倉庫接口

package com.example.coapserver.repository;

import com.example.coapserver.entity.Device;
import org.springframework.data.jpa.repository.JpaRepository;

public interface DeviceRepository extends JpaRepository<Device, Long> {
    Device findByDeviceId(String deviceId); // 根據設備ID查找設備
}

Controller

package com.example.coapserver.controller;

import com.example.coapserver.entity.Device;
import com.example.coapserver.repository.DeviceRepository;
import org.eclipse.californium.core.CoapHandler;
import org.eclipse.californium.core.CoapResponse;
import org.eclipse.californium.spring.annotation.CoapController;
import org.eclipse.californium.spring.annotation.CoapGetMapping;
import org.eclipse.californium.spring.annotation.CoapObserveRelation;
import org.eclipse.californium.spring.annotation.CoapPutMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

@RestController
@CoapController
@RequestMapping("/api")
publicclass SensorDataController {

    privatestaticfinal Logger logger = LoggerFactory.getLogger(SensorDataController.class);

    @Autowired
    private DeviceRepository deviceRepository; // 注入設備倉庫

    // 存儲傳感器數據的并發哈希映射
    private ConcurrentHashMap<String, Double> sensorDataMap = new ConcurrentHashMap<>();
    private AtomicInteger observeCounter = new AtomicInteger(0); // 觀察計數器

    /**
     * 注冊新設備
     *
     * @param device 要注冊的設備對象
     * @return 注冊結果
     */
    @PostMapping("/register")
    public ResponseEntity<String> registerDevice(@RequestBody Device device) {
        if (deviceRepository.findByDeviceId(device.getDeviceId()) != null) {
            returnnew ResponseEntity<>("設備已注冊", HttpStatus.BAD_REQUEST);
        }
        device.setActive(true);
        deviceRepository.save(device);
        logger.info("注冊設備: {}", device.getDeviceId());
        returnnew ResponseEntity<>("設備注冊成功", HttpStatus.CREATED);
    }

    /**
     * 更新傳感器數據
     *
     * @param sensorId 傳感器ID
     * @param payload  數據負載(溫度值)
     */
    @CoapPutMapping("/sensors/{sensorId}")
    public void updateSensorData(@PathVariable String sensorId, byte[] payload) {
        String dataStr = new String(payload);
        try {
            double data = Double.parseDouble(dataStr);
            Optional<Device> deviceOpt = Optional.ofNullable(deviceRepository.findByDeviceId(sensorId));
            if (deviceOpt.isPresent()) {
                Device device = deviceOpt.get();
                device.setTemperature(data);
                deviceRepository.save(device);
                sensorDataMap.put(sensorId, data);
                logger.info("收到傳感器 {} 的數據: {}", sensorId, data);
                checkAndAlert(sensorId, data);
                observeCounter.incrementAndGet();  // 觸發觀察者通知
            } else {
                logger.warn("未知的傳感器ID: {}", sensorId);
            }
        } catch (NumberFormatException e) {
            logger.error("傳感器 {} 的數據格式無效: {}", sensorId, dataStr);
        }
    }

    /**
     * 獲取傳感器數據
     *
     * @param sensorId 傳感器ID
     * @return 傳感器數據
     */
    @CoapGetMapping("/sensors/{sensorId}")
    public String getSensorData(@PathVariable String sensorId) {
        return sensorDataMap.getOrDefault(sensorId, "無數據").toString();
    }

    /**
     * 提供一個可觀察的資源,用于實時訂閱傳感器狀態的變化
     *
     * @return 觀察計數器值
     */
    @CoapObserveRelation
    @CoapGetMapping("/observe")
    public String observeSensors() {
        int count = observeCounter.get();
        logger.info("觀察傳感器,計數器: {}", count);
        return String.valueOf(count);  // 返回計數器值以觸發觀察者通知
    }

    /**
     * 獲取所有已注冊的設備信息
     *
     * @return 設備列表
     */
    @GetMapping("/devices")
    public List<Device> getAllDevices() {
        return deviceRepository.findAll();
    }

    /**
     * 檢查溫度并觸發警報
     *
     * @param sensorId 傳感器ID
     * @param temperature 溫度值
     */
    private void checkAndAlert(String sensorId, double temperature) {
        if (temperature > 30.0) {
            logger.warn("高溫警報:傳感器 {} 的溫度為 {}°C", sensorId, temperature);
            // 在這里可以添加發送警報的通知邏輯
        }
    }
}

Application

package com.example.coapserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CoapServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CoapServerApplication.class, args);
    }
}

測試

為了測試CoAP協議,我們可以使用Californium提供的命令行工具來發送CoAP請求。

我已經安裝Californium CLI工具。你也可以從Californium GitHub倉庫  (https://github.com/eclipse/californium)下載并編譯。很簡單的!

更新傳感器數據

cf-cli put coap://localhost:5683/api/sensors/sensor1 --payload "25.5"

輸出:

Sending PUT request to coap://localhost:5683/api/sensors/sensor1
Response from coap://localhost:5683/api/sensors/sensor1:
Code: 2.04 Changed
Payload:

獲取傳感器數據

cf-cli get coap://localhost:5683/api/sensors/sensor1

輸出:

Sending GET request to coap://localhost:5683/api/sensors/sensor1
Response from coap://localhost:5683/api/sensors/sensor1:
Code: 2.05 Content
Options: [Content-Format:text/plain]
Payload: 25.5


責任編輯:武曉燕 來源: Java知識日歷
相關推薦

2023-06-29 16:11:19

物聯網LPWA網絡

2015-11-16 14:19:50

2020-12-10 18:39:36

低功耗廣域網LPWAN物聯網

2015-10-19 11:37:04

物聯網廣域網低功耗

2018-09-11 04:31:19

低功耗廣域網LPWAN物聯網

2022-09-28 15:41:47

智能建筑物聯網

2015-09-23 11:36:06

2021-04-13 15:11:19

物聯網LoRa和BLEIoT

2019-09-17 15:25:34

WAN物聯網技術

2016-01-11 17:01:49

Wi-FiHaLow物聯網

2019-06-04 05:00:48

物聯網低功耗廣域網商業建筑

2016-03-17 09:38:58

物聯網廣域網絡

2020-03-29 23:12:34

物聯網LPWANIOT

2021-07-21 11:34:12

物聯網IOT

2024-01-16 14:53:15

物聯網IOT蜂窩漫游

2018-10-11 05:07:19

物聯網通信IOT

2021-08-12 16:55:37

物聯網設備通信物聯網

2020-04-03 10:27:38

物聯網智慧城市技術

2019-01-02 06:12:34

廣域網絡LPWAN物聯網

2023-03-08 11:30:56

點贊
收藏

51CTO技術棧公眾號

亚洲日韩欧美一区二区在线| 日韩精品电影在线| 亚洲韩国日本中文字幕| 欧美日韩亚洲一| 国产精品一区二区三区四区色| 日本91福利区| 欧美激情精品久久久久久大尺度| 在线视频 日韩| 成人精品三级| 亚洲一区二区三区影院| 久久婷婷国产综合尤物精品| 中文字字幕在线观看| 国产综合激情| 一区二区三区四区视频| 99国产精品免费视频| 欧美xo影院| 一片黄亚洲嫩模| 日韩.欧美.亚洲| 亚洲a视频在线| 免费人成在线不卡| 午夜精品一区二区三区视频免费看| 91久久免费视频| 色妞ww精品视频7777| 91成人网在线| 秋霞无码一区二区| 免费高清在线观看| 久久精品一区二区三区不卡牛牛 | 国产熟妇一区二区三区四区| 欧美在线不卡| 中日韩美女免费视频网址在线观看| 苍井空张开腿实干12次| 国产精品久久久久久久久免费高清| 亚洲h在线观看| 中文字幕成人一区| 久久天堂电影| 91一区在线观看| 91在线网站视频| 伊人久久成人网| 亚洲一区图片| 久久久av亚洲男天堂| 人妻av无码一区二区三区| 亚洲国产视频二区| 91精品国产综合久久久久久久| 色婷婷综合久久久久中文字幕| 91福利在线尤物| 一区二区三区资源| 黄色录像特级片| 久久五月精品| 亚洲欧美一区二区视频| 精品蜜桃一区二区三区| 99国产精品久久久久99打野战| 日本va欧美va欧美va精品| 日韩av片永久免费网站| 国产成人免费看| 妖精视频成人观看www| 欧美激情一区二区三区高清视频 | 亚洲精品国产首次亮相| 尤物yw午夜国产精品视频| 扒开jk护士狂揉免费| 免费看av成人| 亚洲视频综合网| 阿v天堂2014| 欧美日韩老妇| 日日噜噜噜夜夜爽亚洲精品| 色偷偷www8888| 伊人青青综合网| 蜜臀久久99精品久久久久久宅男| 婷婷伊人五月天| 中出一区二区| 久久99精品久久久久久青青91 | 亚洲成人三级| 中文字幕亚洲一区二区av在线| 一区二区精品在线| 国产cdts系列另类在线观看| 一区二区欧美国产| 青青草国产精品视频| 成人黄色免费短视频| 欧美日韩一级片网站| 中文字幕国产高清| 在线综合色站| 亚洲欧美三级在线| 国产白丝一区二区三区| 亚洲欧美综合| 欧美一级片免费在线| 国产天堂第一区| 国产精品伊人色| 久久国产精品亚洲va麻豆| 国产无套粉嫩白浆在线2022年| 国产精品入口麻豆原神| 天堂av在线中文| 日韩影院在线| 欧美精品乱人伦久久久久久| 国产chinesehd精品露脸| 日韩在线影视| 久久天堂av综合合色| 免费中文字幕视频| 日韩精品电影在线观看| 国产91免费视频| 免费在线国产| 亚洲乱码中文字幕综合| 91免费视频网站在线观看| 日韩三级一区| 日韩精品免费在线观看| 精品亚洲乱码一区二区 | 91国偷自产一区二区三区的观看方式| 成人a v视频| 国产精品亚洲视频| 日本免费一区二区三区| 美女网站视频在线| 欧美性大战久久久久久久| 色诱av手机版| 久久影视一区| 日韩av不卡在线| 精品人妻一区二区三区蜜桃 | 欧美亚洲另类在线一区二区三区 | 97成人精品区在线播放| 亚洲特级黄色片| 99国产精品视频免费观看| 一级一片免费播放| 性感美女一区二区在线观看| 精品国产亚洲在线| 一级免费黄色录像| 丝袜亚洲另类欧美综合| 国产一区二区三区色淫影院| 美女隐私在线观看| 欧亚一区二区三区| 精品人妻少妇嫩草av无码| 国产精品av久久久久久麻豆网| 国产精品久久久久999| 午夜福利一区二区三区| 亚洲一区在线视频| 性久久久久久久久久久久久久| 欧美日韩黑人| 日韩免费av片在线观看| 无码精品在线观看| 亚洲电影在线播放| 免费看三级黄色片| 婷婷激情综合| 国产美女91呻吟求| 999在线视频| 在线观看视频一区二区| 国产精品一区二区入口九绯色| 亚洲午夜在线| 粉嫩av一区二区三区免费观看 | 怡红院av一区二区三区| 看看黄色一级片| 色呦哟—国产精品| 国产日韩在线视频| 麻豆网站在线看| 91精品国产91久久久久久一区二区 | 国产精品你懂的| 波多野结衣xxxx| 成人激情在线| 成人国产精品久久久久久亚洲| 亚洲1卡2卡3卡4卡乱码精品| 欧美老女人在线| 搜索黄色一级片| 国产老肥熟一区二区三区| 佐佐木明希av| 精品国产一区二区三区性色av| 久久精品视频免费播放| 国产黄色av片| 香蕉加勒比综合久久| www.色多多| 久久久久国产精品一区三寸| 日韩激情视频| 久久久精品一区二区毛片免费看| 精品国内亚洲在观看18黄| 国产精品自拍电影| 一区二区三区久久久| 无码成人精品区在线观看| 一区二区三区福利| 日韩精品一区二区三区色偷偷 | 在线播放国产精品二区一二区四区| 欧日韩不卡视频| 国产乱子伦视频一区二区三区 | 看片的网站亚洲| 久久久99精品视频| 久久99精品国产自在现线| 日本一区二区三区四区视频| av资源种子在线观看| 欧美一区二区高清| 国产午夜久久久| 久久精品欧美一区二区三区麻豆| 国产欧美一区二| 亚洲一级电影| 亚洲精品中文字幕乱码三区不卡| 精品亚洲a∨一区二区三区18| 97久久精品人人澡人人爽缅北| 久草在线青青草| 91精品国产一区二区人妖| 在线观看国产亚洲| 中文字幕五月欧美| 日本护士做爰视频| 久久www免费人成看片高清| 国产日本在线播放| 欧美日一区二区| 国产精品久久波多野结衣| 成人精品电影在线| 久久久久久有精品国产| aaa在线免费观看| 亚洲成人激情在线| 中文字幕在线播放av| 亚洲图片欧美一区| 天堂av免费在线| 2023国产一二三区日本精品2022| 99九九99九九九99九他书对| 性久久久久久| 99久久久精品视频| 久久亚洲国产| 欧美激情国产日韩| caoporn成人| 成人信息集中地欧美| 成人欧美大片| 韩日精品中文字幕| 国产原创精品视频| 在线丨暗呦小u女国产精品| 狠狠综合久久av一区二区 | 亚洲精品中文字幕成人片| 欧美视频三区在线播放| 久久夜色精品亚洲| 一区二区三区在线播| 潮喷失禁大喷水aⅴ无码| 久久久不卡影院| 色天使在线视频| 国产99久久久国产精品潘金| 久久久久久久久久久久久久久国产| 老司机精品福利视频| 人人妻人人添人人爽欧美一区| 欧美日韩一卡| 4444在线观看| 亚洲国产精品综合久久久| 亚洲国产精品视频一区| 国产探花在线精品| 欧美日韩一区二区视频在线观看 | 久久久久久久久久免费视频 | 欧美片网站免费| 成人激情视频免费在线| 国产激情欧美| 国产精品永久免费在线| 成人18视频在线观看| 国产精品久在线观看| 日韩一级二级| 国产精品三级在线| 国产成人亚洲一区二区三区| 国产精品免费福利| 丰满少妇一区| 国产欧洲精品视频| 色999久久久精品人人澡69| 国产精品网站入口| www.久久爱.com| 91影视免费在线观看| 999色成人| 444亚洲人体| 红杏成人性视频免费看| 精品国产一区二区三区麻豆免费观看完整版| 成功精品影院| 九九九九九精品| 亚洲天堂日韩在线| 日韩在线三级| 国产精品国产一区| 9191国产视频| 99精品国产福利在线观看免费 | 桃花岛tv亚洲品质| 国产精品久久久久久久久影视| 国产福利亚洲| 97超级在线观看免费高清完整版电视剧| 免费欧美网站| 精品视频一区在线| 精品国产一区二区三区香蕉沈先生 | 亚洲一区国产视频| 日韩av综合在线| 91福利国产精品| 97国产精品久久久| 精品久久久久久久久久久久久久久 | 国产女人18毛片水真多18精品| 国产综合18久久久久久| 国产欧美日韩一区二区三区四区| 正在播放一区二区三区| 欧美成人一品| 成人综合视频在线| 九一九一国产精品| 四虎精品一区二区| 国产欧美日韩在线观看| 欧美黄色aaa| 精品国产老师黑色丝袜高跟鞋| 色婷婷久久综合中文久久蜜桃av| 91精品国产日韩91久久久久久| 日韩一级在线播放| 亚洲视频在线观看视频| 任你弄在线视频免费观看| 91大神在线播放精品| 久久xxx视频| 国产欧美丝袜| 我不卡影院28| 99999精品视频| 国产激情视频一区二区在线观看| 国产偷人妻精品一区| **欧美大码日韩| 特级毛片www| 日韩精品一区二区三区蜜臀 | 久久精品在这里| 国产一级一片免费播放| 欧美在线观看视频一区二区三区| 亚洲国产综合网| 丝袜美腿精品国产二区| 无遮挡爽大片在线观看视频| 91香蕉国产在线观看| 啪啪亚洲精品| www.成年人视频| 韩国精品一区二区| 精品欧美一区二区久久久| 亚洲午夜精品网| 国产三级自拍视频| 中文字幕av一区中文字幕天堂| sm在线播放| 99影视tv| 中国成人一区| 日本黄色的视频| 国产日韩欧美a| 天天干天天干天天| 精品不卡在线视频| 97超碰在线公开在线看免费| 国产精品久久久久久久9999| 神马久久影院| 霍思燕三级露全乳照| 国产精品亚洲午夜一区二区三区 | 91精品精品| 国产成人黄色网址| 久久久久国产精品免费免费搜索| 日本三级网站在线观看| 欧美不卡一区二区| 羞羞视频在线观看不卡| 91精品视频在线看| 欧美大片aaaa| 国产精品一区二区小说| 国产女人18毛片水真多成人如厕 | 影音先锋亚洲视频| 日韩在线a电影| 一级片视频免费看| 色就色 综合激情| 黄色网址在线播放| 日本久久中文字幕| 精品产国自在拍| 亚洲精品一二三四五区| 国产三级精品三级| 最近中文字幕av| www.日本久久久久com.| 国产成人免费视频网站视频社区 | 56国语精品自产拍在线观看| 日本视频在线免费观看| 国产区精品视频| 欧美99在线视频观看| 麻豆精品国产传媒| 亚洲图片自拍偷拍| 天天干天天插天天操| 2019中文字幕免费视频| 国产成人一区| 91制片厂毛片| 亚洲欧美国产高清| 精品国产999久久久免费| 欧美激情啊啊啊| 九九热hot精品视频在线播放| 狠狠97人人婷婷五月| 国产欧美日韩激情| 国产一区二区麻豆| 欧美片一区二区三区| 全国精品免费看| 亚洲欧美另类动漫| 亚洲色图清纯唯美| 日本免费一区视频| 国产精品成人免费视频| 999国产精品视频| 无码人妻久久一区二区三区蜜桃 | 在线免费看av的网站| xxx欧美精品| 成人午夜三级| 日韩av黄色网址| 综合精品久久久| 天天射天天操天天干| 国产精品毛片a∨一区二区三区|国| 一本精品一区二区三区| 中文字幕 亚洲一区| 欧美日韩久久一区二区| 色操视频在线| 日本a级片久久久| 国产福利91精品一区二区三区| 久久久久亚洲av成人毛片韩| 色婷婷**av毛片一区| 国产乱人伦精品一区| 欧美成人福利在线观看| 亚洲自拍偷拍av| 国产爆初菊在线观看免费视频网站| 亚洲free嫩bbb| 国产精品一国产精品k频道56| 成年人二级毛片| 亚洲另类激情图| 亚洲视频国产| 岛国毛片在线播放| 午夜精品久久久久久久 |