步骤 1:先决条件和接线图
如何使用 thingsboard 通过 mqtt 进行 raspberry pi gpio 控制
服务器设置
您将需要访问 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’
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}
def on_connect(client, userdata, rc):
print(‘connected with result code ’ str(rc))
client.subscribe(‘v1/devices/me/rpc/request/ ’)
client.publish(‘v1/devices/me/attributes’, get_gpio_status(), 1)
def on_message(client, userdata, msg):
print ‘topic: ’ msg.topic ‘ message: ’ str(msg.payload)
data = json.loads(msg.payload)
if data[‘method’] == ‘getgpiostatus’:
client.publish(msg.topic.replace(‘request’, ‘response’), get_gpio_status(), 1)
elif data[‘method’] == ‘setgpiostatus’:
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():
return json.dumps(gpio_state)
def set_gpio_status(pin, status):
gpio.output(pin, gpio.high if status else gpio.low)
gpio_state[pin] = status
gpio.setmode(gpio.board)
for pin in gpio_state:
gpio.setup(pin, gpio.out)
client = mqtt.client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(access_token)
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 状态更改。 转载自: