步驟1:先決條件和接線圖
服務(wù)器設(shè)置
您將需要訪問(wèn)Thingsboard服務(wù)器。使用Live Demo或《安裝指南》來(lái)安裝Thingsboard。
硬件和插腳列表
Raspberry Pi-我們將使用Raspberry Pi 3 Model B,但您也可以使用其他任何型號(hào)
引線和相應(yīng)的電阻
陰陽(yáng)跳線
接線圖
將允許控制所有可用GPIO引腳的狀態(tài),我們建議在這些引腳上連接一些LED以提高可視性。您可以使用此步驟所附的基本架構(gòu)。您也可以為每個(gè)LED添加一個(gè)電阻。
步驟2:對(duì)Raspberry Pi進(jìn)行編程
MQTT庫(kù)安裝
以下命令將安裝MQTT Python庫(kù):
$ sudo pip install paho-mqtt
應(yīng)用程序源代碼
我們的應(yīng)用程序由經(jīng)過(guò)注釋的單個(gè)python腳本組成。源代碼可在此處獲取。
您將需要修改 THINGSBOARD_HOST 常量以匹配Thingsboard服務(wù)器安裝IP地址或主機(jī)名。如果您正在使用實(shí)時(shí)演示服務(wù)器,請(qǐng)使用“ demo.thingsboard.io” 。
ACCESS_TOKEN 常量的值對(duì)應(yīng)于預(yù)先配置的演示數(shù)據(jù)中的示例Raspberry Pi設(shè)備。 。如果您正在使用實(shí)時(shí)演示服務(wù)器,請(qǐng)獲取預(yù)配置的“ Raspberry Pi演示設(shè)備” 的訪問(wèn)令牌。
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import json
THINGSBOARD_HOST = ‘YOUR_THINGSBOARD_IP_OR_HOSTNAME’
ACCESS_TOKEN = ‘RASPBERRY_PI_DEMO_TOKEN’
# We assume that all GPIOs are LOW
gpio_state = {7: False, 11: False, 12: False, 13: False, 15: False, 16: False, 18: False, 22: False, 29: False,
31: False, 32: False, 33: False, 35: False, 36: False, 37: False, 38: False, 40: False}
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, rc):
print(‘Connected with result code ’ + str(rc))
# Subscribing to receive RPC requests
client.subscribe(‘v1/devices/me/rpc/request/+’)
# Sending current GPIO status
client.publish(‘v1/devices/me/attributes’, get_gpio_status(), 1)
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print ‘Topic: ’ + msg.topic + ‘ Message: ’ + str(msg.payload)
# Decode JSON request
data = json.loads(msg.payload)
# Check request method
if data[‘method’] == ‘getGpioStatus’:
# Reply with GPIO status
client.publish(msg.topic.replace(‘request’, ‘response’), get_gpio_status(), 1)
elif data[‘method’] == ‘setGpioStatus’:
# Update GPIO status and reply
set_gpio_status(data[‘params’][‘pin’], data[‘params’][‘enabled’])
client.publish(msg.topic.replace(‘request’, ‘response’), get_gpio_status(), 1)
client.publish(‘v1/devices/me/attributes’, get_gpio_status(), 1)
def get_gpio_status():
# Encode GPIOs state to json
return json.dumps(gpio_state)
def set_gpio_status(pin, status):
# Output GPIOs state
GPIO.output(pin, GPIO.HIGH if status else GPIO.LOW)
# Update GPIOs state
gpio_state[pin] = status
# Using board GPIO layout
GPIO.setmode(GPIO.BOARD)
for pin in gpio_state:
# Set output mode for all GPIO pins
GPIO.setup(pin, GPIO.OUT)
client = mqtt.Client()
# Register connect callback
client.on_connect = on_connect
# Registed publish message callback
client.on_message = on_message
# Set access token
client.username_pw_set(ACCESS_TOKEN)
# Connect to Thingsboard using default MQTT port and 60 seconds keepalive interval
client.connect(THINGSBOARD_HOST, 1883, 60)
try:
client.loop_forever()
except KeyboardInterrupt:
GPIO.cleanup()
運(yùn)行應(yīng)用程序
此簡(jiǎn)單命令將啟動(dòng)應(yīng)用程序:
python gpio.py
步驟3:數(shù)據(jù)可視化
為簡(jiǎn)化此說(shuō)明,我們?cè)诿總€(gè)Thingboard安裝中可用的演示數(shù)據(jù)中都包含了“ Raspberry PI GPIO演示儀表板”。當(dāng)然,您可以修改此儀表板:調(diào)整,添加,刪除小部件等。您可以通過(guò)以租戶(hù)管理員身份登錄來(lái)訪問(wèn)此儀表板。
在本地安裝的情況下:
密碼:租戶(hù)
如果是實(shí)時(shí)演示服務(wù)器:
登錄名:您的實(shí)時(shí)演示用戶(hù)名(電子郵件)
密碼:您的實(shí)時(shí)演示密碼
有關(guān)如何獲取帳戶(hù)的更多詳細(xì)信息,請(qǐng)參見(jiàn)實(shí)時(shí)演示頁(yè)面。/p》
登錄后,打開(kāi) Dashboards-》 Raspberry PI GPIO Demo Dashboard 頁(yè)面。您應(yīng)觀察帶有GPIO控制和狀態(tài)面板的演示儀表板。現(xiàn)在,您可以使用控制面板切換GPIO的狀態(tài)。結(jié)果,您將在設(shè)備和狀態(tài)面板上看到LED狀態(tài)更改。
-
樹(shù)莓派
+關(guān)注
關(guān)注
121文章
1948瀏覽量
107000 -
MQTT
+關(guān)注
關(guān)注
5文章
670瀏覽量
23489
發(fā)布評(píng)論請(qǐng)先 登錄
貿(mào)澤開(kāi)售Raspberry Pi用于嵌入式和IIoT應(yīng)用的RP2350微控制器
OpenVINO?是否與TensorFlow集成支持Raspberry Pi?
無(wú)法在Raspberry Pi 4中通過(guò)PyPI OpenVINO?安裝2022年運(yùn)行時(shí)軟件包,為什么?
Raspberry Pi樹(shù)莓派新手指南
新品來(lái)襲!Raspberry Pi Compute Module 5

Raspberry Pi Pico 2 W 發(fā)布

Raspberry Pi Pico 2

Banana Pi M5 與 Raspberry Pi 4 – 基準(zhǔn)測(cè)試

樹(shù)莓派gpio有什么用,樹(shù)莓派gpio接口及編程方法
e絡(luò)盟開(kāi)售Raspberry Pi AI 攝像頭

使用串行連接通過(guò) Raspberry Pi 增強(qiáng)您的 XRP 項(xiàng)目

Modbus RTU、Modbus TCP轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)Modbus設(shè)備與云平臺(tái)的無(wú)縫通信

評(píng)論