Thingsboard 用 Thingsboard 来搭建可视化的物联平台

so_cool · 2020年03月10日 · 861 次阅读

步骤 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’

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 状态更改。 转载自:http://m.elecfans.com/article/1086093.html

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册