小弟用ESP8266裝了兩個感測器透過MQTT Broker回傳兩個數值給PYTHON
但我想要進行字串分割 A變數=1號感測數值 B變數=2號感測數值 井水不犯河水
有上網找方法於是寫了<程式一>簡易的這個方法是可以的
但是我用相同的方法給帶入MQTT訊息變數<程式二>,附一張結果圖
<程式一>
msgs = '987,654,321'
strlist = msgs.split(',')
sa = strlist[0]
sb = strlist[1]
sc = strlist[2]
print('分割',sa,sb,sc)
<程式二>
def on_message(client, userdata, msg):
# 轉換編碼utf-8才看得懂中文
global msgs , msg01
msgs = (msg.payload.decode('utf-8'))
strlist = msgs.split(',')
sa = strlist[0]#1號數值
sb = strlist[0]#2號數值
print('1號感測數值:',sa)#1號數值
print('2號感測數值:',sb)#2號數值
<結果圖>
我需要的情境是如下 感測數值分明
1號感測數值: 2
2號感測數值: 28415
1號感測數值: 2
2號感測數值: 28415
1號感測數值: 2
2號感測數值: 28415
請問各位前輩是出了什麼問題
根據這篇的說法
Note the message parameter is a message class with members topic, qos, payload, retain.
我猜
可以用 msg.payload 取得資料
並且用 msg.topic 去判斷是「1號感測器」或「2號感測器」
總之
先把 msg.topic, msg.qos, msg.payload, msg.retain 都顯示出來先