成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

物聯網數據庫 IoTDB —— 從協議到數據

物聯網 物聯網應用
在這個系列之前的文章里,我們介紹了Iotdb的LSM,以及Iot中的最佳實踐,這次我們看看如何將mqtt和Iotdb整合起來。

[[403065]]

首先,先允許我,祝各位讀者小可愛們,節日快樂。

在這個系列之前的文章里,我們介紹了Iotdb的LSM,以及Iot中的最佳實踐,這次我們看看如何將mqtt和Iotdb整合起來。下面我們開始:

iotdb in docker

首先,做一個測試環境,我現在越發喜歡docker 和 WSL 了,除了吃點硬盤,內存和CPU資源以外,沒有什么缺點了......

run in docker

直接把該開的端口都打開,只是測試環境,我就沒再掛目錄。

docker run -d -p 6667:6667 -p 31999:31999 -p 8181:8181 -p 5555:5555 -p 1883:1883 apache/iotdb

等待一會,執行 docker ps 查看是否成功了

  1. ➜ ~ docker ps 
  2. CONTAINER ID   IMAGE         COMMAND                 CREATED       STATUS       PORTS                                                                                                                                                                                                                       NAMES 
  3. ad9b18f8bff3   apache/iotdb   "/iotdb/sbin/start-s…"   2 hours ago   Up 2 hours    0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp, 0.0.0.0:6667->6667/tcp, :::6667->6667/tcp, 0.0.0.0:8181->8181/tcp, ::: 

初步的iotdb in docker 環境,我們就搞好了。接下來,開啟mqtt服務。

開啟 Mqtt 服務

進入iotdb的docker docker exec -it ad9b18f8bff3 /bin/bash

編輯配置文件vi iotdb/conf/iotdb-engine.properties

開啟服務,根據自己的需要,配置ip和端口等。

  1. #################### 
  2. ### MQTT Broker Configuration 
  3. #################### 
  4.  
  5. # whether to enable the mqtt service. 
  6. enable_mqtt_service=false   # 修改成 true , 代表開啟 mqtt服務 
  7.  
  8. # the mqtt service binding host. 
  9. mqtt_host=0.0.0.0 # ip 
  10.  
  11. # the mqtt service binding port. 
  12. mqtt_port=1883  # 端口 
  13.  
  14. # the handler pool size for handing the mqtt messages. 
  15. mqtt_handler_pool_size=1 
  16.  
  17. # the mqtt message payload formatter. 
  18. mqtt_payload_formatter=json  # 數據格式 
  19.  
  20. max length of mqtt message in byte 
  21. mqtt_max_message_size=1048576 

重啟服務,如果不會,就重啟docker鏡像。

iotdb 基礎操作

  • 啟動服務: sbin/start-client.sh
  1. root@ad9b18f8bff3:/iotdb/sbin# ./start-cli.sh 
  2. --------------------- 
  3. Starting IoTDB Cli 
  4. --------------------- 
  5. _____       _________ ______   ______ 
  6. |_   _|     | _   _ ||_   _ `.|_   _ \ 
  7. | |   .--.|_/ | | \_| | | `. \ | |_) | 
  8. | | / .'`\ \ | |     | | | | | __'
  9. _| |_| \__. | _| |_   _| |_.' /_| |__) | 
  10. |_____|'.__.' |_____| |______.'|_______/ version 0.11.1 
  11.  
  12.  
  13. IoTDB> login successfully 
  • 退出CLI: quit 或 exit
  • 停止服務:$sbin/stop-server.sh
  • 設置一個存儲組到IOTDB,名為root : IoTDB> SET STORAGE GROUP TO root
  • 查看當前IOTDB的存儲組 : IoTDB> SHOW STORAGE GROUP
  1. IoTDB> SHOW STORAGE GROUP 
  2. +-------------+ 
  3. |storage group
  4. +-------------+ 
  5. |   root.test| 
  6. +-------------+ 
  7. Total line number = 1 
  8. It costs 0.127s 
  • 查看系統中存在的所有時間序列 :IoTDB> SHOW TIMESERIES
  1. IoTDB> show timeseries 
  2. +-------------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  3. |                     timeseries|alias|storage group|dataType|encoding|compression|tags|attributes| 
  4. +-------------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  5. |root.test.wf01.wt01.temperature| null|   root.test|   FLOAT| GORILLA|     SNAPPY|null|     null
  6. |     root.test.wf01.wt01.status| null|   root.test| BOOLEAN|     RLE|     SNAPPY|null|     null
  7. |   root.test.wf01.wt01.hardware| null|   root.test|   TEXT|   PLAIN|     SNAPPY|null|     null
  8. +-------------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  9. Total line number = 3 
  10. It costs 0.009s 
  • 查看系統中存在的特定時間序列: SHOW TIMESERIES root.test.wf01.wt01.status
  1. IoTDB> SHOW TIMESERIES root.test.wf01.wt01.status 
  2. +--------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  3. |               timeseries|alias|storage group|dataType|encoding|compression|tags|attributes| 
  4. +--------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  5. |root.test.wf01.wt01.status| null|   root.test| BOOLEAN|     RLE|     SNAPPY|null|     null
  6. +--------------------------+-----+-------------+--------+--------+-----------+----+----------+ 
  7. Total line number = 1 
  8. It costs 0.003s 
  • 插入數據 INSERT INTO root.test.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)
  1. IoTDB> INSERT INTO root.test.wf01.wt01(timestamp,status,temperature) values(200,false,20.71) 
  2. Msg: The statement is executed successfully. 
  • 查看數據: select * from root.test;
  1. IoTDB> select * from root.test; 
  2. +------------------------+-------------------------------+--------------------------+----------------------------+ 
  3. |                   Time|root.test.wf01.wt01.temperature|root.test.wf01.wt01.status|root.test.wf01.wt01.hardware| 
  4. +------------------------+-------------------------------+--------------------------+----------------------------+ 
  5. |2021-01-20T02:00:00.000Z|                           21.2|                     true|                       hello| 
  6. +------------------------+-------------------------------+--------------------------+----------------------------+ 
  7. Total line number = 1 
  8. It costs 0.077s 
  • 查看設備:show devices
  1. IoTDB> show devices 
  2. +-------------------+ 
  3. |           devices| 
  4. +-------------------+ 
  5. |root.test.wf01.wt01| 
  6. +-------------------+ 
  7. Total line number = 1 
  8. It costs 0.002s 

mqtt to iotdb

代碼

構建一個實體對象,用于存儲

  1. package wang.datahub.iotdb; 
  2.  
  3. import com.google.gson.Gson; 
  4. import java.util.List; 
  5.  
  6. public class IotdbVO { 
  7.    private String device; 
  8.    private long timestamp = System.currentTimeMillis(); 
  9.    private List<String> measurements; 
  10.    private List<Object> values
  11.  
  12.    public String getDevice() { 
  13.        return device; 
  14.   } 
  15.  
  16.    public void setDevice(String device) { 
  17.        this.device = device; 
  18.   } 
  19.  
  20.    public long getTimestamp() { 
  21.        return timestamp
  22.   } 
  23.  
  24.    public void setTimestamp(long timestamp) { 
  25.        this.timestamp = timestamp
  26.   } 
  27.  
  28.    public List<String> getMeasurements() { 
  29.        return measurements; 
  30.   } 
  31.  
  32.    public void setMeasurements(List<String> measurements) { 
  33.        this.measurements = measurements; 
  34.   } 
  35.  
  36.    public List<Object> getValues() { 
  37.        return values
  38.   } 
  39.  
  40.    public void setValues(List<Object> values) { 
  41.        this.values = values
  42.   } 
  43.  
  44.    public String toJson(){ 
  45.        Gson g = new Gson(); 
  46.        String jsonData = g.toJson(this); 
  47.        return jsonData; 
  48.   } 
  49.  
  50.  
  51.    @Override 
  52.    public String toString() { 
  53.        return "IotdbVO{" + 
  54.                "device='" + device + '\'' + 
  55.                ", timestamp=" + timestamp + 
  56.                ", measurements=" + measurements + 
  57.                ", values=" + values + 
  58.                '}'
  59.   } 

使用祖傳的代碼來模擬數據發射到iotdb,這里直接將mqtt的主機和端口,配置到前文所修改的iotdb的mqtt服務上,就大功告成了。

  1. package wang.datahub.iotdb; 
  2.  
  3. import org.fusesource.mqtt.client.BlockingConnection; 
  4. import org.fusesource.mqtt.client.MQTT; 
  5. import org.fusesource.mqtt.client.QoS; 
  6.  
  7. import java.util.ArrayList; 
  8. import java.util.List; 
  9. import java.util.Random; 
  10.  
  11. public class EmmitToIotdb { 
  12.  
  13.    public static void main(String[] args) { 
  14.        String[] hardwares = new String[]{ 
  15.                "a1"
  16.                "b1"
  17.                "b2"
  18.                "c3"
  19.                "d1"
  20.                "f5" 
  21.       }; 
  22.        int count = 1000; 
  23.                
  24.        for(int i = 0; i < count ;i++){ 
  25.            IotdbVO iotdbVO = new IotdbVO(); 
  26.            iotdbVO.setDevice("root.test.wf01.wt01"); 
  27.            List<String> measurements = new ArrayList<>(); 
  28.            List<Object> values = new ArrayList<>(); 
  29.            measurements.add("temperature"); 
  30.            measurements.add("status"); 
  31.            measurements.add("hardware"); 
  32.  
  33.            Random r = new Random(); 
  34.            values.add(r.nextInt(40)); 
  35.            values.add(r.nextBoolean()); 
  36.            values.add(hardwares[r.nextInt(hardwares.length)]); 
  37.  
  38.            iotdbVO.setMeasurements(measurements); 
  39.            iotdbVO.setValues(values); 
  40.            emmitToIotdb(iotdbVO); 
  41.       } 
  42.   } 
  43.  
  44.    public static void emmitToIotdb(IotdbVO content){ 
  45.        try { 
  46.            MQTT mqtt = new MQTT(); 
  47.            mqtt.setHost("127.0.0.1", 1883); 
  48.            mqtt.setUserName("root"); 
  49.            mqtt.setPassword("root"); 
  50.  
  51.            BlockingConnection connection = mqtt.blockingConnection(); 
  52.            connection.connect(); 
  53.  
  54.            String payload = content.toJson(); 
  55.            connection.publish(content.getDevice(),payload.getBytes(), QoS.AT_LEAST_ONCE,false); 
  56.  
  57.            connection.disconnect(); 
  58.       } catch (Exception e){ 
  59.            e.printStackTrace(); 
  60.       } 
  61.  
  62.   } 
  63.  
  64.  

執行結果

iotdb,功能還是相當強大的,也非常有意思,希望本篇文章對你有所幫助,也非常歡迎您來與我交流。

本文轉載自微信公眾號「麒思妙想」,可以通過以下二維碼關注。轉載本文請聯系麒思妙想公眾號。

 

責任編輯:武曉燕 來源: 麒思妙想
相關推薦

2021-02-21 06:33:27

存儲引擎物聯網

2021-01-04 10:24:22

物聯網安全數據庫隱私保護

2020-06-16 14:18:59

數據物聯網IOT

2019-01-24 10:02:02

數據庫物聯網

2020-11-25 17:50:27

數據庫物聯網SQL

2020-06-17 15:01:30

物聯網數據庫物聯網數據庫

2023-04-19 14:20:13

2019-01-24 08:36:17

物聯網數據共享協議

2020-07-02 09:20:40

物聯網數據庫IoT

2020-08-04 13:00:32

物聯網數據庫

2020-11-19 09:19:42

物聯網物聯網標準物聯網協議

2024-02-26 07:27:55

數據庫人工智能物聯網

2021-05-07 05:54:43

數據庫數據湖數據

2023-11-29 09:53:29

數據庫遷移SQL Server

2019-03-18 08:31:02

物聯網開源數據庫IOT

2023-05-15 11:34:30

物聯網IOT

2024-01-08 10:47:08

物聯網

2023-08-28 13:39:00

AI智能

2019-10-11 11:20:28

物聯網技術機器學習

2010-05-18 20:04:05

物聯網智能計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本免费一区二区三区四区 | av毛片在线播放 | 一区二区三区中文字幕 | 亚洲精品久久久一区二区三区 | 欧美婷婷| 国产精品久久久久久久久久 | 狠狠操婷婷 | 日韩精品一区二区三区在线播放 | 亚洲国产成人精品久久久国产成人一区 | 欧美日韩视频在线播放 | 一区二区三区中文字幕 | 伊人免费在线观看 | 三区四区在线观看 | 亚洲精品一区在线观看 | 日本小电影在线 | 欧美日日 | 精品国产欧美一区二区三区成人 | 夜夜骑首页| 日本国产一区二区 | 国产午夜精品福利 | 日韩欧美在线视频 | 国产在线一区二区三区 | 精品一区二区三区四区外站 | 国产精品美女久久久久aⅴ国产馆 | 一级毛片在线播放 | 成人av免费| 成人午夜电影在线观看 | 一区二区在线 | 国产精品国产三级国产aⅴ原创 | 色香婷婷| 亚洲激精日韩激精欧美精品 | 亚洲日本一区二区三区四区 | 观看av | 日韩一级免费大片 | 日本特黄a级高清免费大片 国产精品久久性 | 久久精品91久久久久久再现 | 国产在线看片 | 免费在线播放黄色 | 国产精品久久久久久久久免费高清 | 成人国产精品色哟哟 | xx视频在线 |