今天來把最後的步驟完成吧!將前面實作 Publish 之後 Subscribe 收到的資料上傳到昨天所介紹的 influxDB 上,以及利用python 連接 InfluxDB 查詢資料的資料,取得資料後繪製成簡單的圖表。
接著最後會對於這30天的鐵人賽做個簡單的Summary與整理、回顧,以及個人的心得分享。
終於來到最後天啦~~~
架構圖
import paho.mqtt.client as mqtt
import random
import json
import time
# 連線設定
client = mqtt.Client()
client.username_pw_set("sensor","xxxx")
client.connect("54.xx.xx.xx", 1883, 60)
while True:
t0 = random.randint(10,30)
payload = {'Tem' : t0 }
print (json.dumps(payload))
#要發布的主題和內容
client.publish("Sensor/Temperature", json.dumps(payload))
time.sleep(30)
結果:
import paho.mqtt.client as mqtt
import json
# 當地端程式連線伺服器得到回應時,要做的動作
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
# 將訂閱主題寫在on_connet中
client.subscribe("Sensor/Temperature")
# 當接收到從伺服器發送的訊息時要進行的動作
def on_message(client, userdata, msg):
print(msg.topic+" "+ msg.payload.decode('utf-8'))
savedata(msg.topic , msg.payload.decode('utf-8'))
# 儲存到 influxdb
def savedata(topic, data):
from influxdb import InfluxDBClient
# influxdb 連線設定
client = InfluxDBClient('54.xx.xx.xx', 8086, 'root', '', 'Sensor')
data = json.loads(data)
datas = [
{
"measurement": "Temperature",
"tags": {
"topic": topic
},
"fields": data
}
]
# 寫入數據
client.write_points(datas)
# 連線設定
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set("python","xxxx")
client.connect("54.xx.xx.xx", 1883, 60)
client.loop_forever()
結果:
在終端機用 influx 指令查看資料庫資料
結果:
import matplotlib.pyplot as plt
import json
from influxdb import InfluxDBClient
client = InfluxDBClient('54.227.227.143', 8086, 'root', '', 'Sensor')
# 將從資料庫select到的資料取內容(get_points())再將型態轉成list
result = list(client.query('select * from Temperature').get_points())
print(result)
time =[]
tem = []
for item in result:
# 時間部分只取小分秒的地方
time.append(item["time"][11:19])
tem.append(item["Tem"])
# 畫圖
plt.xlabel('Time')
plt.ylabel('Temperature')
plt.plot(time, tem ,'b-o')
plt.show()
資料查詢結果:
簡單的溫度圖表:
學習基礎的Python運用
物聯網介紹
雲端介紹
Python 實作
每天都寫一篇學習文章真的是滿不簡單的,有時候明明就已經發文了卻還以為自己沒有發,到晚上快12點的時候都要再檢查自己到底發文了沒有XDDDD。剛開始寫的時候總覺得時間還很久,但是後來就逐漸習慣每天邊學習邊整理成文章發表,我覺得學習並不困難,困難的是把學習到的東西整理出來。最後想說的就是這30天過得很充實啦!鐵人賽完賽啦!!!