1. 程式人生 > >使用python實現mqtt的釋出和訂閱

使用python實現mqtt的釋出和訂閱

需要安裝的python庫

 使用python編寫程式進行測試MQTT的釋出和訂閱功能。首先要安裝:pip install paho-mqtt

測試釋出(pub)

 我的MQTT部署在阿里雲的伺服器上面,所以我在本機上編寫了python程式進行測試。

然後在shell裡面重新開啟一個終端,訂閱一個主題為“chat” mosquitto_sub -t chat

 在本機上測試遠端的MQTT的釋出功能就是把自己作為一個傳送資訊的人,當自己傳送資訊的時候,所有訂閱過該主題(topic)的物件都將收到自己傳送的資訊。 
mqtt_client.py

# encoding: utf-8

import paho.mqtt.client as
mqtt HOST = "101.200.46.138" PORT = 1883 def test(): client = mqtt.Client() client.connect(HOST, PORT, 60) client.publish("chat","hello liefyuan",2) # 釋出一個主題為'chat',內容為‘hello liefyuan’的資訊 client.loop_forever() if __name__ == '__main__': test()

釋出/訂閱測試

# -*- coding: utf-8 -*-

import
paho.mqtt.client as mqtt MQTTHOST = "101.200.46.138" MQTTPORT = 1883 mqttClient = mqtt.Client() # 連線MQTT伺服器 def on_mqtt_connect(): mqttClient.connect(MQTTHOST, MQTTPORT, 60) mqttClient.loop_start() # publish 訊息 def on_publish(topic, payload, qos): mqttClient.publish(topic, payload, qos) # 訊息處理函式
def on_message_come(lient, userdata, msg): print(msg.topic + " " + ":" + str(msg.payload)) # subscribe 訊息 def on_subscribe(): mqttClient.subscribe("/server", 1) mqttClient.on_message = on_message_come # 訊息到來處理函式 def main(): on_mqtt_connect() on_publish("/test/server", "Hello Python!", 1) on_subscribe() while True: pass if __name__ == '__main__': main()

註解函式:

client.connect(self, host, port, keepalive, bind_address)

client.publish(self, topic, payload, qos, retain)

client.subscribe(self, topic, qos)

測試訂閱(sub)

 在本機上編寫程式測試訂閱功能,就是讓自己的程式作為一個接收者,同一個主題沒有釋出(pub)資訊的時候,就自己一直等候。

# encoding: utf-8


import paho.mqtt.client as mqtt


def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("chat")


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("www.liefyuan.top", 1883, 60)
client.loop_forever()

相關推薦

使用python實現mqtt釋出訂閱

需要安裝的python庫 使用python編寫程式進行測試MQTT的釋出和訂閱功能。首先要安裝:pip install paho-mqtt測試釋出(pub) 我的MQTT部署在阿里雲的伺服器上面,所以我在本機上編寫了python程式進行測試。然後在shell裡面重新開啟一個終端,訂閱一個主題為“chat” m

在QT上實現ROS 節點的釋出訂閱

1、安裝ros_qtc_plugin 2、ROS工程建立 2.1、新建工作區,點選New Project 選擇Other Project -> ROS Workspace: 2.2、填寫工作區名稱,選擇路徑。選擇路徑時建議新建同名資料夾,工作區建立時沒

python程式釋出訂閱ros話題

編寫talker.py: 這個檔案呼叫了opencv開啟攝像頭獲取影象併發布出去 #!/usr/bin/env python # license removed for brevity import rospy from sensor_msgs.msg import

MAC下搭建MQTT客戶端,測試釋出訂閱話題

1. 下載MQTTKIT開源庫,編譯出你所需要的libMQTTKit.a和標頭檔案 MQTTKIT開源庫github下載地址:點這裡 下載好MQTTKIT開源庫後,編譯下(假如你想在模擬器上執行客戶端,可以直接編譯出一個模擬器版本的libMQTTKit.a和標頭檔案,反之編

python操作redis進行釋出訂閱訊息

在遠端伺服器安裝redis,並啟動 訂閱端程式碼 import redis pool=redis.ConnectionPool(host='192.168.100.30',

Jedis實現Publish/Subscribe功能(釋出訂閱

Redis為我們提供了publish/subscribe(釋出/訂閱)功能。我們可以對某個channel(頻道)進行subscribe(訂閱),當有人在這個channel上publish(釋出)訊息時,redis就會通知我們,這樣我們可以收到別人釋出的訊息。  作為Java的redis客戶端,Jedis提

ROS學習第五彈(釋出訂閱 Python寫 Publisher and Subscriber)

1.寫一個釋出節點 節點是ROS中被ROS網路連線起來的可執行的項,我們將建立一個釋出節點來持續廣播訊息。 首先去教程包的地址: roscd beginner_tutorials 1.1 程式碼 需要建立一個script的指令碼資料夾並儲存Python程式碼: $ m

Android使用MQTT實現訊息釋出訂閱

關於MQTTMQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支援所有平臺,幾乎可以把所有聯網物品和外部連線起來,被用來當做感測器和制動器(比如通過Twit

使用python實現冒泡排序快速排序

code def bubble python實現 style range 交換 冒泡排序 sdn 1 def bubble(arr): 2 """冒泡排序""" 3 loop = len(arr) - 1 4 if loop > 0:

python實現猜數字猜拳小遊戲

編寫 -1 猜拳遊戲 com 猜數字小遊戲 軟件 +++ draw 小遊戲 1.猜數字小遊戲 #!/usr/bin/python #-*-coding:utf-8-*- import random print "-----------------------------

如何用Python實現堆棧隊列詳細講解

Python語言 Python編程開發 Python案例應用 python實現堆棧   堆棧是一個後進先出的數據結構,其工作方式就像一堆汽車排隊進去一個死胡同裏面,最先進去的一定是最後出來。   我們可以設置一個類,用列表來存放棧中元素的信息,利用列表的append和pop方法可以實現棧的出棧po

WebService—CXF整合Spring實現介面釋出呼叫過程

CXF整合Spring實現介面釋出 釋出過程如下: 1、引入jar包(基於maven管理) <dependency> <groupId>org.apache.cxf</groupId> <artifactId>

譯: 3. RabbitMQ Spring AMQP 之 Publish/Subscribe 釋出訂閱

在第一篇教程中,我們展示瞭如何使用start.spring.io來利用Spring Initializr建立一個具有RabbitMQ starter dependency的專案來建立spring-amqp應用程式。 在上一個教程中,我們建立了一個新的包(tut2)來放置我們的配置,傳送者

利用python實現梯度下降邏輯迴歸原理(Python詳細原始碼:預測學生是否被錄取)

本案例主要是:建立邏輯迴歸模型預測一個學生是否被大學錄取,沒有詳細介紹演算法推到, 讀者可查閱其他部落格理解梯度下降演算法的實現:https://blog.csdn.net/wangliang0633/article/details/79082901 資料格式如下:第三列表示錄取狀態,0--

4.Redis的訊息釋出訂閱

Redis的訊息釋出和訂閱 Author:SimpleWu GitHub-redis 什麼是訊息釋出和訂閱? Redis 釋出訂閱(pub/sub)是一種程序間的訊息通訊模式: 傳送者(pub)傳送訊息 訂閱者(sub)接收訊息 Re

原生js實現觀察者訂閱者模式

觀察者模式也叫 釋出者-訂閱者模式,釋出者釋出事件,訂閱者監聽事件並做出反應 在傳統的前端解耦方面,觀察者模式作為比較常見一種設計模式,大量使用在各種框架類庫的設計當中。 核心程式碼: //

《Redis官方文件》釋出訂閱

原文連結: 釋出/訂閱(Pub/Sub) SUBSCRIBE、UNSUBSCRIBE 和 PUBLISH 這三個命令實現了釋出/訂閱訊息模式(引用自維基百科),傳送者(釋出者)並不是直接傳送它們的訊息給指定的接收者(訂閱者),而是將訊息釋出到特定的訊息通道,並且不需要知道訂閱者(如果有的話)的

python實現tcp伺服器客戶端(socket)

python實現tcp伺服器和客戶端(socket) 1.socket模組 socket是什麼 socket最初是為了同一主機上的應用程式建立的,使得一個程式與另外一個程式之間可以通訊,也就是所謂的程序間通訊,有兩種型別的socket:基於檔案和麵向網路的。

redis的釋出訂閱

釋出   PUBLISH 訂閱   SUBSCRIBE                             釋出和訂閱的實驗 PUBLISH channel msg 將資訊 message 傳送到指定的頻道 channe

Python實現線性迴歸邏輯迴歸演算法

本文使用python實現了線性迴歸和邏輯迴歸演算法,並使用邏輯迴歸在實際的資料集上預測疝氣病症病馬的死亡率(當然這裡我們的線性迴歸和邏輯迴歸實現是原生的演算法,並沒有考慮正則化係數問題,後期會將其補充完整)。 一、線性迴歸 1.模型表示 2.損失函式