MQTT協定的訊息內容很精簡,非常適合用於處理器資源及網路頻寬有限的物聯網裝置, MQTT的標頭採用數字編碼,整個長度只佔2位元組,等同兩個字元,後面跟著訊息的主題(topic)和內容(payload) , MQTT是一種基於「發布∕訂閱」機制的訊息傳輸協定(MQTT is a Client Server publish/subscribe messaging transport protocol)。代理人(broker) 是個伺服器軟體,向伺服器發送主題的一方是發布者(publisher),從伺服器獲取主題的一方則是訂閱者(subscriber)。 https://swf.com.tw/?p=1002
MQTT主題名稱是UTF-8(萬國碼)編碼的字串,我們可以自行決定主題名稱,例如,傳送溫度的訊息主題可命名成「溫度」、傳送亮度的訊息主題叫做「照度」…等等。主題名稱也支援類似檔案路徑的階層式命名方式,假設住家裡面有許多感測器,我們可依照測器所在位置,規劃如下的命名階層結構:
https://www.hivemq.com/try-out/
Connect to Public Broker
Host: broker.hivemq.com
Port: 1883
Websocket Port: 8000
https://github.com/kamilfb/mqtt-spy/wiki/Downloads
安裝 Mosquitto MQTT Broker
sudo apt install -y mosquitto
安裝 Mosquitto Client
sudo apt install -y mosquitto-clients
Add the following lines to /etc/mosquitto/mosquitto.conf in the "Default Listener" section: enable websockets
port 1883
listener 9001
protocol websockets
sudo service mosquitto restart
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("Sensor/Temperature/Room1")
def on_message(client, userdata, msg):
print(msg.topic+" "+ msg.payload.decode('utf-8'))
j = json.loads(msg.payload.decode('utf-8'))
if(j['value'] < 10):
print('Temp too low !!')
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set("try","xxxx")
client.connect("52.198.197.98", 1883, 60)
client.loop_forever()
import paho.mqtt.client as mqtt
import time
import json
import random
dataChnId1 = "Temperature"
MQTT_SERVER = "52.198.197.98"
MQTT_PORT = 1883
MQTT_ALIVE = 60
MQTT_TOPIC1 = "Sensor/" + dataChnId1 + "/Room1"
mqtt_client = mqtt.Client()
mqtt_client.connect(MQTT_SERVER, MQTT_PORT, MQTT_ALIVE)
while True:
t0 = random.randint(0,30)
payload = {"dataChnId":dataChnId1,"value":t0}
print(dataChnId1 + " : " + str(t0))
mqtt_client.publish(MQTT_TOPIC1, json.dumps(payload), qos=1)
time.sleep(10)
download https://mosquitto.org/download/
install to c:/mosquitto
create a password.txt
jj:kkks
drchiu:klsfjl
guest:kkkk
mosquitto_passwd.exe -U password.txt 加密
更改檔案權限
修改 mosquitto.conf
附加下列文字
allow_anonymous true
listener 1883
protocol mqtt
listener 1884
protocol websockets
存檔 啟動程式
mosquitto.exe -v -c mosquitto.conf
另外 windows 可用 ipconfig 及 linux 、 mac 可用 ifconfig 看你電腦的ip address
Web socket MQTT http://www.hivemq.com/demos/websocket-client/
61.219.106.180 1884 Topic: stat/RFID/nuid Topic: stat/RF/key
jj手環 nuid : daa929f4
jj 員工證: nuid e8fe53d6