步驟1:先決條件和接線圖
服務(wù)器設(shè)置
您將需要訪問Thingsboard服務(wù)器。使用Live Demo或《安裝指南》來安裝Thingsboard。
硬件和插腳列表
Raspberry Pi-我們將使用Raspberry Pi 3 Model B,但您也可以使用其他任何型號
引線和相應(yīng)的電阻
陰陽跳線
接線圖
將允許控制所有可用GPIO引腳的狀態(tài),我們建議在這些引腳上連接一些LED以提高可視性。您可以使用此步驟所附的基本架構(gòu)。您也可以為每個LED添加一個電阻。
步驟2:對Raspberry Pi進行編程
MQTT庫安裝
以下命令將安裝MQTT Python庫:
$ sudo pip install paho-mqtt
應(yīng)用程序源代碼
我們的應(yīng)用程序由經(jīng)過注釋的單個python腳本組成。源代碼可在此處獲取。
您將需要修改 THINGSBOARD_HOST 常量以匹配Thingsboard服務(wù)器安裝IP地址或主機名。如果您正在使用實時演示服務(wù)器,請使用“ demo.thingsboard.io” 。
ACCESS_TOKEN 常量的值對應(yīng)于預(yù)先配置的演示數(shù)據(jù)中的示例Raspberry Pi設(shè)備。 。如果您正在使用實時演示服務(wù)器,請獲取預(yù)配置的“ Raspberry Pi演示設(shè)備” 的訪問令牌。
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īng)用程序
此簡單命令將啟動應(yīng)用程序:
python gpio.py
步驟3:數(shù)據(jù)可視化
為簡化此說明,我們在每個Thingboard安裝中可用的演示數(shù)據(jù)中都包含了“ Raspberry PI GPIO演示儀表板”。當(dāng)然,您可以修改此儀表板:調(diào)整,添加,刪除小部件等。您可以通過以租戶管理員身份登錄來訪問此儀表板。
在本地安裝的情況下:
登錄名:tenant@thingsboard.org
密碼:租戶
如果是實時演示服務(wù)器:
登錄名:您的實時演示用戶名(電子郵件)
密碼:您的實時演示密碼
有關(guān)如何獲取帳戶的更多詳細(xì)信息,請參見實時演示頁面。/p》
登錄后,打開 Dashboards-》 Raspberry PI GPIO Demo Dashboard 頁面。您應(yīng)觀察帶有GPIO控制和狀態(tài)面板的演示儀表板?,F(xiàn)在,您可以使用控制面板切換GPIO的狀態(tài)。結(jié)果,您將在設(shè)備和狀態(tài)面板上看到LED狀態(tài)更改。
-
樹莓派
+關(guān)注
關(guān)注
116文章
1699瀏覽量
105537 -
MQTT
+關(guān)注
關(guān)注
5文章
649瀏覽量
22439
發(fā)布評論請先 登錄
相關(guān)推薦
評論