MQTT環境搭建(python測試)

在ubuntu16.04/rk3399上搭建mqtt服務器並不難,主要就是用到了mosquitto這款消息代理服務軟件.其採用發佈/訂閱模式傳輸機制,輕量、簡單、開放並易於實現,被廣泛應用於物聯網之中.

1.環境搭建

1.1依賴環境

sudo apt  install gcc-c++
sudo apt install cmake
sudo apt install openssl-dev

1.2 安裝c-areas(支持異步DNS查找的庫)

wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
tar xvf c-ares-1.10.0.tar.gz
cd c-ares-1.10.0
./configure
make
sudo make install

1.3 安裝lib-uuid

sudo apt install uuid-dev

1.4 安裝libwebsockets

wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build
cd build
cmake .. -DLIB_SUFFIX=64
make install

1.5 下載mosquitto與安裝

mkdir software
cd software
wget http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
tar -xzvf mosquitto-1.4.10.tar.gz

cd mosquitto-1.4.10
make -j4
sudo make install

2.啓動測試

創建用戶:

sudo groupadd mosquitto
sudo useradd -g mosquitto mosquitto

程序配置:

mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

啓動程序:

mosquitto -c /etc/mosquitto/mosquitto.conf -d

最後我們再打開一個服務器窗口,在一個(訂閱)窗口輸入:

mosquitto_sub -t hello

另一個(發佈)窗口輸入:

mosquitto_pub -t hello -h localhost -m "hello world!"

結果如下:
在這裏插入圖片描述

3.python同樣程序測試

3.1 sub.py代碼

import paho.mqtt.client as mqtt # 導入mqtt客戶端庫
 
def on_connect(client, userdata, flags, rc): # 連接成功回調函數
  print("Connected with result code "+str(rc))

def on_message(client, userdata, msg):# 消息推送回調函數
  print(msg.topic+" "+str(msg.payload))# 打印主題和消息

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.subscribe('emqtt',qos=0)## 訂閱emqtt主題
client.loop_forever()# 循環等待消息

3.2 pub.py代碼

import paho.mqtt.client as mqtt # 導入mqtt客戶端庫
 
def on_connect(client, userdata, flags, rc):# 連接成功回調函數
  print("Connected with result code "+str(rc))

def on_message(client, userdata, msg):# 消息推送回調函數
  print(msg.topic+" "+str(msg.payload))# 打印主題和消息

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.publish('emqtt',payload='Hello,EMQ!',qos=0)
client.loop_start()

3.3 運行結果

在這裏插入圖片描述接下來看看mqtt c版本是如何運行的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章