参考资料:
https://www.emqx.cn/blog/use-mqtt-with-raspberry-pi
https://pypi.org/project/paho-mqtt/
官方网站:https://pypi.org/project/paho-mqtt/
pip install paho-mqtt
# test_connect.py
import paho.mqtt.client as mqtt
import json
import time
from datetime import datetime
# 回调函数。当尝试与 MQTT broker 建立连接时,触发该函数。
# client 是本次连接的客户端实例。
# userdata 是用户的信息,一般为空。但如果有需要,也可以通过 user_data_set 函数设置。
# flags 保存服务器响应标志的字典。
# rc 是响应码。
# 一般情况下,我们只需要关注 rc 响应码是否为 0 就可以了。
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected success")
else:
print(f"Connected fail with code {rc}")
MQTT_SERVER = "127.0.0.1" # EMQ X服务器IP,或者其他MQTT服务器IP
CLIENT_ID = "respberry-A0A0"
TOPIC = "test/propety/post"
username='respberry-A0A0' # 用户名
password='respberry-A0A0' # 密码
# 字典格式payload
msg = {"event_time":"","event_date":"","iot_id":"respberry-A0A0","product_key":"SZJK-WSD","type":"DEVICE","humidity":50,"temperature":27.5}
client = mqtt.Client(CLIENT_ID)
client.username_pw_set(username,password)
client.on_connect = on_connect
# client.connect("broker.emqx.io", 1883, 60)
client.connect(MQTT_SERVER, 1883, 60)
while True:
# publish
msg["event_time"]=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
msg["event_date"]=datetime.now().strftime('%Y-%m-%d')
msg_load=json.dumps(msg) #转换为json格式字符串
client.publish(TOPIC, payload=msg_load, qos=0, retain=False)
time.sleep(1)
client.loop_forever()
订阅者收到的报文
{"event_time": "2021-04-27 16:08:46", "event_date": "2021-04-27", "iot_id": "9CE15122004B1200", "product_key": "SZJK-WSD", "dev_type": "DEVICE", "humidity": 50, "temperature": 27.5}