亚洲日韩中文字幕A∨,亚洲成a人v欧美综合天堂下载 ,日本亚洲欧洲无免费码在线 ,亲子乱子伦视频一区二区

封控在家,帶大家建設(shè)一個(gè)物聯(lián)網(wǎng)平臺(tái)吧

2021年11月9日下午8:33

一,服務(wù)器

雖然這個(gè)沒(méi)什么要求,實(shí)驗(yàn)的話虛擬機(jī)就可以;什么淘汰筆記本,臺(tái)式機(jī)也可以。由于我是狂熱份子,就買了臺(tái)巴掌大的小電腦做為我的實(shí)驗(yàn)服務(wù)器。只是個(gè)電腦,內(nèi)存沒(méi)有ECC功能。不過(guò)夠我做實(shí)驗(yàn)的了。

巴掌大,可以裝一塊2.5英寸機(jī)械硬盤和一塊NVME固態(tài)硬盤。8G內(nèi)存,CPU是I5-6500t,當(dāng)時(shí)價(jià)格1800元。里面裝的是Ubuntu 21.04服務(wù)器系統(tǒng),我的Gcc編譯和服務(wù)器實(shí)驗(yàn)都是上面進(jìn)行。

怎么裝Ubuntu我就不詳細(xì)說(shuō)了,網(wǎng)上教程很多,裝服務(wù)器版本的系統(tǒng),這種系統(tǒng)沒(méi)有界面純命令行,穩(wěn)定性非常高。

二,物聯(lián)網(wǎng)接入平臺(tái)

我選擇的是開(kāi)源的EMQX,百萬(wàn)級(jí)連接。比著商業(yè)版缺少數(shù)據(jù)固化功能,需要自己開(kāi)發(fā)一套訂閱系統(tǒng)用于存儲(chǔ)數(shù)據(jù)。

網(wǎng)址是:
https://www.emqx.com/zh/downloads?product=broker,記得選擇開(kāi)源版的Ubuntu版本,企業(yè)版只可免費(fèi)試用幾個(gè)月。

安裝也很簡(jiǎn)單,官方給了說(shuō)明,只需3行代碼。

從http://你的服務(wù)器IP:18083/進(jìn)入管理界面,18083是WEB管理頁(yè)面端口。運(yùn)行后的界面是這樣的。

占用的接口是下面這些,我們常使用的是1883端口,既是mqtt:tcp接口。如果使用coap協(xié)議就是5683端口。

三,傳感器模擬(物聯(lián)網(wǎng)設(shè)備1)

傳感器模擬我使用的是樹(shù)莓派,把樹(shù)莓派的CPU溫度用python上傳到物聯(lián)網(wǎng)平臺(tái)。也可以訂閱自己感興趣的主題,用于控制個(gè)燈,風(fēng)扇啥的。代碼如下:

# subscriber.py
import paho.mqtt.client as mqtt
import time

# 0: 連接成功
# 1: 連接失敗-不正確的協(xié)議版本
# 2: 連接失敗-無(wú)效的客戶端標(biāo)識(shí)符
# 3: 連接失敗-服務(wù)器不可用
# 4: 連接失敗-錯(cuò)誤的用戶名或密碼
# 5: 連接失敗-未授權(quán)
# 6-255: 未定義
# 如果是其它問(wèn)題,可以檢查網(wǎng)絡(luò)情況,或者確認(rèn)是否安裝了 `paho-mqtt`。
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("\n連接成功!\n")
    elif rc==1:
        print(f"\n接失敗-不正確的協(xié)議版本\n")
    elif rc==2:
        print(f"\n連接失敗-無(wú)效的客戶端標(biāo)識(shí)符\n")
    elif rc==3:
        print(f"\n連接失敗-服務(wù)器不可用\n")
    elif rc==4:
        print(f"\n連接失敗-錯(cuò)誤的用戶名或密碼\n")
    elif rc==5:
        print(f"\n連接失敗-未授權(quán)\n")
    else:
        print(f"\n連接失敗-未定義\n")
    # 訂閱,需要放在 on_connect 里
    # 如果與 broker 失去連接后重連,仍然會(huì)繼續(xù)訂閱 raspberry/topic 主題
    client.subscribe("raspberry/topic")

# 回調(diào)函數(shù),當(dāng)收到消息時(shí),觸發(fā)該函數(shù)
def on_message(client, userdata, msg):
    print(f"{msg.topic} {msg.payload}")
    
def get_cpu_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    return float(cpu_temp)/1000

client = mqtt.Client("數(shù)梅派終端")
client.username_pw_set("你的用戶名","你的密碼")
client.on_connect = on_connect
client.on_message = on_message

# 設(shè)置遺囑消息,當(dāng)樹(shù)莓派斷電,或者網(wǎng)絡(luò)出現(xiàn)異常中斷時(shí),發(fā)送遺囑消息給其他客戶端
client.will_set('raspberry/status',  b'{"status": "offline!"}')

# 創(chuàng)建連接,三個(gè)參數(shù)分別為 broker 地址,broker 端口號(hào),?;顣r(shí)間
client.connect("10.195.136.221", 1883, 60)

# 設(shè)置網(wǎng)絡(luò)循環(huán)堵塞,在調(diào)用 disconnect() 或程序崩潰前,不會(huì)主動(dòng)結(jié)束程序
client.loop_start()

while True:
    # 四個(gè)參數(shù)分別為:主題,發(fā)送內(nèi)容,QoS, 是否保留消息
    client.publish('raspberry/topic', payload=str(get_cpu_temp()), qos=0, retain=False)
    print(f"send cpu temp to raspberry/topic")
    time.sleep(5)

Copy

這段代碼每5秒鐘向服務(wù)器發(fā)送一條溫度信息。同時(shí)訂閱了一條raspberry/topic的主題。

四,訂閱設(shè)備模擬(物聯(lián)網(wǎng)設(shè)備2)

如果沒(méi)有樹(shù)莓派,也可以用軟件模擬,軟件叫MQTTX,免費(fèi)的,和服務(wù)器平臺(tái)是一家,不用寫任何代碼,也是新手比較推薦的玩法。

和樹(shù)莓派一樣,可以發(fā)送消息和訂閱消息,從圖中可以看到訂閱了樹(shù)莓派所有過(guò)來(lái)的主題,當(dāng)前溫度不到44度。

從上次升級(jí)到現(xiàn)在,服務(wù)器已經(jīng)運(yùn)行3天接收到5萬(wàn)多條信息。

文章標(biāo)簽: 封控在家 
? ? 上一篇: ? ? ? 下一篇:

最新資訊