精品欧美一区二区三区在线观看 _久久久久国色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精品网站在线观看| 人妻精品一区一区三区蜜桃91| 精品成人影院| 欧美久久高跟鞋激| 妺妺窝人体色www看人体| 性生活黄色大片| 久久亚洲精选| 久久成人精品一区二区三区| 国产在线不卡av| 日本欧美韩国| 亚洲午夜成aⅴ人片| 欧美少妇一区| 国产黄色片av| 蜜臀精品久久久久久蜜臀| 色综合男人天堂| 91精品免费在线| 国产精品美女无圣光视频| 国产高潮流白浆| 天天躁日日躁狠狠躁欧美| 欧美性色欧美a在线播放| 蜜桃视频一区二区在线观看| 久久久久久女乱国产| 国产在线播精品第三| 97热在线精品视频在线观看| 黑人狂躁日本娇小| 一道本一区二区三区| 欧美一区二区久久| 99视频免费播放| sm久久捆绑调教精品一区| 欧美国产精品一区二区三区| 国产免费一区| 97超级碰碰| 激情综合网天天干| 综合久久2019| 精品无码av一区二区三区| 欧美激情亚洲一区| 久久精品日产第一区二区三区高清版 | 国产又粗又猛又爽又黄的视频四季 | 黑人精品xxx一区| 在线播放 亚洲| 成人在线观看网站| 91麻豆视频网站| 国产一区二区三区四区五区在线| 国产精品国产一区二区三区四区| 葵司免费一区二区三区四区五区| 国模吧一区二区三区| 成人免费视频网站入口::| 久久国产精品亚洲人一区二区三区 | 91成人福利在线| 国产一级中文字幕| 午夜欧美理论片| 久久精品中文字幕电影| 亚洲色图欧美色| 成人女性视频| 一区二区成人av| 国内精品卡一卡二卡三| 免费精品国产| 亚洲小视频在线观看| 精品国产av无码| 美女久久99| 国产亚洲欧美视频| www中文在线| 99久久精品费精品国产风间由美 | 国产精品久久久久久久免费大片 | 国产第一页在线播放| 欧美三级第一页| 久久久在线免费观看| 欧美一级高潮片| 99精品热6080yy久久| 国产91对白在线播放| 久久精品久久久久久久| 日韩高清中文字幕一区| 国产精品视频自拍| 国产乱色精品成人免费视频| 国产麻豆9l精品三级站| 成人看片在线| 天堂资源最新在线| 国产一级成人av| 亚洲国产精品va在看黑人| 2一3sex性hd| 少妇精品导航| 中文字幕亚洲图片| 欧美精品一区二区成人| 亚洲无毛电影| 日本高清+成人网在线观看| 亚洲国产精品无码久久久| 久久国产人妖系列| 极品尤物一区二区三区| 成人77777| 亚洲激情图片小说视频| 131美女爱做视频| 最新日韩一区| 精品国产制服丝袜高跟| a毛片毛片av永久免费| 欧美影院三区| 久久久久久久亚洲精品| 无码人妻丰满熟妇精品区| 狠狠狠色丁香婷婷综合激情 | 无遮挡又爽又刺激的视频| 青草综合视频| 日韩大陆毛片av| 国产三级aaa| 一本色道88久久加勒比精品| 国产精品丝袜高跟| 人妻一区二区三区免费| 日本一区二区三区国色天香| 久久久久久久久久伊人| 国产成人精品一区二区三区在线| 欧美www视频| 精品伦精品一区二区三区视频密桃| 亚洲第一黄网| 91精品视频免费看| 男女污污视频在线观看| 亚洲综合久久久久| 亚洲欧美日本一区二区三区| 免费观看成人www动漫视频| 日韩一区二区av| 少妇太紧太爽又黄又硬又爽| 另类小说一区二区三区| 欧美成人dvd在线视频| 在线观看三级视频| 欧美日韩免费不卡视频一区二区三区| 手机在线看片日韩| 午夜日韩福利| 成人网在线视频| 国产视频三级在线观看播放| 五月婷婷久久丁香| 欧美一级小视频| 日本大胆欧美| 日本国产高清不卡| 欧美一级一区二区三区| 中文字幕在线观看一区二区| 久久久精品在线视频| 国内毛片久久| 欧美激情女人20p| 国产精品伦一区二区三区| 久久九九99视频| 日本久久久精品视频| 极品一区美女高清| 欧美激情视频网站| 精品人妻午夜一区二区三区四区 | 天天操天天操天天操天天操天天操| 久久国产日韩| 欧美日韩精品免费观看| 91超碰在线播放| 亚洲精品一区二区三区香蕉| 亚洲av鲁丝一区二区三区| 精品一区二区三区香蕉蜜桃 | 一级毛片视频在线| 欧美午夜一区二区三区免费大片| 成人免费看aa片| 玖玖玖国产精品| 日本一区二区不卡高清更新| 日韩成人影音| 中文字幕亚洲激情| 最近中文字幕在线观看视频| 欧美激情中文字幕一区二区| 五月天激情视频在线观看| 日韩理论电影大全| 成人精品福利视频| 日本电影在线观看| 亚洲大尺度美女在线| 国产成人精品网| 国产欧美一区二区在线观看| 污网站免费在线| 亚欧美无遮挡hd高清在线视频| 亚洲在线第一页| 欧美hdxxx| 亚洲精品第一页| 日本视频免费观看| 中文字幕一区二区三区精华液| 涩涩网站在线看| 国产综合婷婷| 美女一区视频| 国产精品成人国产| 欧美乱大交xxxxx另类电影| 狠狠综合久久av一区二区| 精品国产31久久久久久| 永久免费毛片在线观看| 国产制服丝袜一区| 青青草视频在线免费播放| 伊人成综合网伊人222| 国产精品网址在线| 欧美日韩经典丝袜| 亚洲精品999| 亚洲性猛交富婆| 一区二区三区日韩精品| 波多野结衣av在线免费观看| 老色鬼精品视频在线观看播放| 日韩人妻精品一区二区三区| 麻豆一区二区| 91精品国产综合久久香蕉的用户体验 | 制服丝袜在线一区| 一区二区三区蜜桃| 熟女俱乐部一区二区| 国产一区二区0| 日韩中文字幕二区| 欧美不卡视频| 日本午夜精品一区二区三区| 亚洲超碰在线观看| 国产精品久久久久久久久借妻 | 国产亚洲一卡2卡3卡4卡新区| 91精品视频播放| 台湾佬成人网| 欧美激情一级欧美精品| 粉嫩一区二区三区国产精品| 日韩美女一区二区三区四区| 久操视频在线免费观看| 亚洲一级二级三级在线免费观看| 三年中国中文观看免费播放| 成人小视频在线| 中文字幕中文在线| 久久亚洲二区| 天天夜碰日日摸日日澡性色av| 99久久视频| 欧美男人的天堂| 国产精品18hdxxxⅹ在线| 国产欧美一区二区三区在线 | 欧美在线高清| 亚洲高清乱码| 欧美欧美黄在线二区| y111111国产精品久久婷婷| 欧美xxxx性| 日本老师69xxx| 男人的天堂免费在线视频| 不卡av在线播放| 日本视频在线观看| 在线观看中文字幕亚洲| 色视频免费在线观看| 日韩欧美一区电影| 国产免费高清视频| 欧美日韩日日摸| 波多野结衣绝顶大高潮| 岛国av一区二区在线在线观看| 动漫精品一区一码二码三码四码| 亚洲欧洲www| 成人免费视频入口| 中文字幕+乱码+中文字幕一区| 3d动漫精品啪啪一区二区下载| 99久久婷婷国产综合精品电影| 麻豆精品国产传媒| 国产精品一区二区在线观看不卡 | 中文字幕日本一区| 国产视频福利一区| 在线播放第一页| av电影在线不卡| 天天干天天插天天操| 亚洲美女免费在线| aaaaa级少妇高潮大片免费看| 日韩免费av网站| 国产一区二区三区国产精品| 久久999免费视频| 国产日产一区二区| 正在播放亚洲1区| 色哟哟视频在线| 中文永久免费观看| 国产视频亚洲色图| 永久免费成人代码| 91一区一区三区| 日本少妇色视频| 久久伊99综合婷婷久久伊| 中文字幕在线播放一区| 99久久精品国产观看| www.免费av| 久久精品在这里| 国产精品美女久久久久av超清| 国模精品娜娜一二三区| 一级免费黄色录像| 成人免费观看视频| 亚洲欧美日韩偷拍| 日韩08精品| 欧美日韩中文字幕日韩欧美| 久久久一二三区| 亚洲成人av一区| 日本一区二区不卡在线| 精品久久中文字幕| 波多野结衣日韩| 7777精品伊人久久久大香线蕉完整版| 99精品视频在线播放免费| 亚洲成人精品在线| 男人的天堂在线免费视频| 日韩在线视频网| 你懂的av在线| 波多野结衣久久久久| 4444kk亚洲人成电影在线| 日本免费在线一区| 91在线短视频| 国产精品国产| 日韩中文字幕一区二区| 欧美日韩中字| 国产91沈先生在线播放| 亚洲专区欧美专区| 亚洲天堂电影网| 第四色日韩影片| 国产成人av在线| 午夜视频一区二区在线观看| 欧美精品一区二区三区在线看午夜| 婷婷丁香综合| www.com毛片| 精品制服美女丁香| www.超碰97| 亚洲视频免费看| 国产91国语对白在线| 欧美一区二区三区的| 免费在线一级视频| 欧美国产日韩二区| 亚洲美女色播| 欧美日韩一区在线观看视频| 欧美伊人影院| 亚欧美在线观看| 成人99免费视频| 黄色一级片国产| 毛片一区二区| 污污免费在线观看| 中文字幕一区二| 青青视频在线免费观看| 日韩欧美专区在线| 日本网站在线免费观看视频| 日本电影亚洲天堂| 老司机精品在线| 国产欧美精品aaaaaa片| 久久精品国产免费看久久精品| 国产白嫩美女无套久久| 亚洲精品videosex极品| 一区二区三区在线免费观看视频| 日韩经典中文字幕| 波多野结衣乳巨码无在线观看| 91免费国产网站| 欧美日一区二区| 日本成人黄色网| 99国产精品久| 日韩免费黄色片| 欧美mv日韩mv亚洲| 欧美人与性动交α欧美精品济南到 | 都市激情一区| 日本免费久久高清视频| 天天躁日日躁狠狠躁欧美| 丰满少妇大力进入| 国产suv精品一区二区883| 国产少妇在线观看| 91精品国产aⅴ一区二区| 三级外国片在线观看视频| 国产精品激情自拍| blacked蜜桃精品一区| 久久精品视频91| 日本一区二区三区四区| 亚洲av无码不卡| 亚洲天堂av网| 亚洲精品第三页| 禁果av一区二区三区| 9久久9毛片又大又硬又粗| 9l国产精品久久久久麻豆| 国产午夜精品无码一区二区| 欧美成人三级电影在线| 免费在线观看av电影| 国产精品国产亚洲精品看不卡15 | 中文字幕欧美日韩在线| 国产韩日精品| 自拍另类欧美| 国产精品一区二区黑丝| 精品处破女学生| 亚洲黄色av网站| 香蕉久久免费电影| 一区二区免费在线观看| 国产一区免费电影| 伊人365影院| 日韩国产在线播放| 国产一区二区三区影视| 97超碰免费观看| 丁香激情综合国产| 免费看毛片网站| www.xxxx欧美| av不卡一区二区| 成人三级视频在线播放| 国产精品每日更新| 精品国产亚洲一区二区麻豆| 久久久免费精品视频| 国产剧情一区| 日本55丰满熟妇厨房伦| 午夜精品福利一区二区三区av| 男人天堂网在线观看| 91中文精品字幕在线视频| 99人久久精品视频最新地址| 国产美女永久免费无遮挡| 日韩一区二区在线播放| 天天综合av| 欧美日韩一区二区三区电影| 99精品欧美一区| 91麻豆成人精品国产免费网站| 久久6免费高清热精品| 日韩免费电影在线观看| xxww在线观看| 午夜影院久久久| 天堂中文8资源在线8| 国产精品免费一区二区三区观看| 日本成人在线电影网| 黄色一级免费视频| 在线观看国产欧美| 成人av动漫| 日本中文字幕影院|