Mqtt broker and client
19 Apr 2019Intro
Environment: Ubuntu
Client lanaguage: Python
Server: Mosquitto
Broker
install:
sudo apt-get install mosquitto
start service:
mosquitto
Set Up User/Password:
- 建立一個帳號名為 User
sudo mosquitto_passwd -c /etc/mosquitto/passwd User
- 執行指令後輸入密碼
Password: xxxx Reenter password: xxxx
- 在 /etc/mosquitto/mosquitto.conf 檔案最後加上
allow_anonymous false password_file /etc/mosquitto/passwd
start service with config:
mosquitto -c /etc/mosquitto/mosquitto.conf
Client (command test)
install:
sudo apt-get install mosquitto-clients
subscribe:
mosquitto_sub -t "topicName"
subscribe with password:
mosquitto_sub -h "localhost" -p "port" -v -d -t "topicName" -u "username" -P "password"
publish:
mosquitto_pub -m "message from mosquitto_pub client" -t "topicName"
publish with password:
mosquitto_pub -h "localhost" -p "port" -t "topicName" -m "test message" -u "username" -P "password"
Client (python)
install:
pip install paho-mqtt
SubscribeTest.py :
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("test")
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.username_pw_set(username="px2",password="px2")
client.connect("localhost", 1883, 60)
client.loop_forever()
PublisherTest.py :
# Publisher.py
import paho.mqtt.client as mqtt
_g_cst_ToMQTTTopicServerIP = "localhost"
_g_cst_ToMQTTTopicServerPort = 1883 #port
_g_cst_MQTTTopicName = "test" #TOPIC name
mqttc = mqtt.Client("python_pub")
mqttc.username_pw_set(username="px2",password="px2")
mqttc.connect(_g_cst_ToMQTTTopicServerIP, _g_cst_ToMQTTTopicServerPort)
mqttc.publish(_g_cst_MQTTTopicName, "Hello")