步骤1:先决条件和接线图
服务器设置
您将需要访问Thingsboard服务器。使用Live Demo或《安装指南》来安装Thingsboard。
硬件和插脚列表
Raspberry Pi-我们将使用Raspberry Pi 3 Model B,但您也可以使用其他任何型号
引线和相应的电阻
阴阳跳线
接线图
将允许控制所有可用GPIO引脚的状态,我们建议在这些引脚上连接一些LED以提高可视性。您可以使用此步骤所附的基本架构。您也可以为每个LED添加一个电阻。
步骤2:对Raspberry Pi进行编程
MQTT库安装
以下命令将安装MQTT Python库:
$ sudo pip install paho-mqtt
应用程序源代码
我们的应用程序由经过注释的单个python脚本组成。源代码可在此处获取。
您将需要修改 THINGSBOARD_HOST 常量以匹配Thingsboard服务器安装IP地址或主机名。如果您正在使用实时演示服务器,请使用“ demo.thingsboard.io” 。
ACCESS_TOKEN 常量的值对应于预先配置的演示数据中的示例Raspberry Pi设备。 。如果您正在使用实时演示服务器,请获取预配置的“ Raspberry Pi演示设备” 的访问令牌。
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()
运行应用程序
此简单命令将启动应用程序:
python gpio.py
步骤3:数据可视化
为简化此说明,我们在每个Thingboard安装中可用的演示数据中都包含了“ Raspberry PI GPIO演示仪表板”。当然,您可以修改此仪表板:调整,添加,删除小部件等。您可以通过以租户管理员身份登录来访问此仪表板。
在本地安装的情况下:
登录名:tenant@thingsboard.org
密码:租户
如果是实时演示服务器:
登录名:您的实时演示用户名(电子邮件)
密码:您的实时演示密码
有关如何获取帐户的更多详细信息,请参见实时演示页面。/p》
登录后,打开 Dashboards-》 Raspberry PI GPIO Demo Dashboard 页面。您应观察带有GPIO控制和状态面板的演示仪表板。现在,您可以使用控制面板切换GPIO的状态。结果,您将在设备和状态面板上看到LED状态更改。
-
树莓派
+关注
关注
116文章
1699浏览量
105525 -
MQTT
+关注
关注
5文章
649浏览量
22435
发布评论请先 登录
相关推荐
评论