- 確保Raspberry Pi上有最新的更新
sudo apt-get update
- 安裝python 3-dev和python3-pip使用這兩個包來與濕度傳感器進行互動
sudo apt-get install python3-dev python3-pip
- 安裝最新版本的setuptools、wheel和pip python包,
sudo python3 -m pip install --upgrade pip setuptools wheel
- 將DHT庫安裝到Raspberry Pi上
sudo pip3 install Adafruit_DHT
- 下載庫
pip install paho-mqtt
基于MQTT協議在樹莓派上利用DHT22溫濕度傳感器測量溫濕度,并且持續發布主題為:temphum,內容為溫濕度的訊息,
發布端程式(檔案名.py):
import paho.mqtt.publish as publish
import Adafruit_DHT
import time
sensor = Adafruit_DHT.DHT22
pin = 27
while True:
hu,temp =Adafruit_DHT.read_retry(sensor,pin) //測量
humtemp = 'temp:{0:0.1f}*C hu:{1}%'.format(temp,hu)
publish.single("temphum",payload=humtemp,qos=0,
hostname="***.***.***.***") //edge節點ip或者localhost
time.sleep(2)
訂閱端程式(檔案名.py):
# encoding: utf-8
#!/user/bin/env python
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import RPi.GPIO as GPIO
import json
import time
#訂閱
#一旦連接成功回呼函式
def on_connect(client,userdata,flags,rc):
print("Connected with result code " + str(rc))
# 一旦訂閱成功回呼函式
def on_message(client,userdata,msg):
print(msg.topic+" "+str(msg.payload))
#一旦訂閱成功回呼函式
def on_subscribe(client,userdata,mid,granted_qos):
print("Subscribed: " + str(mid) + str(granted_qos))
if __name__=='__main__':
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.connect("***.***.***.***",1883,60) //edge節點ip或者localhost
client.subscribe("temphum",0)
client.loop_forever()
服務器使用:mosquitto
程式全部在樹莓派上運行
- 先運行訂閱端腳本
python3 name.py
- 運行發布端腳本
python3 name.py

注意事項:
確保raspberrypi作為edge節點,并處于ready狀態,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336311.html
標籤:其他
下一篇:STM32USART串口通信
