0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Thingsboard通过MQTT进行Raspberry Pi GPIO控制

454398 来源:wv 2019-10-12 14:32 次阅读

步骤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状态更改。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1699

    浏览量

    105525
  • MQTT
    +关注

    关注

    5

    文章

    649

    浏览量

    22435
收藏 人收藏

    评论

    相关推荐

    Raspberry Pi Pico 2 W 发布

    树莓派官方今日宣布推出支持无线连接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售价 7 美元, 较此前的有线版本高出 2 美元 。     Raspberry
    的头像 发表于 11-25 18:25 146次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2 W 发布

    Raspberry Pi Pico 2

    、可选的RISC‑V内核、增强的安全特性,以及升级的接口功能。该器件由RP235x微控制器平台提供支持,此平台也由Raspberry Pi设计。Pico 2将RP2350与4MB板载QSPI闪存配对
    的头像 发表于 11-25 15:10 196次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 2

    Banana Pi M5 与 Raspberry Pi 4 – 基准测试

    Banana Pi M5 基准测试已成为我的网站上最受欢迎的作品之一,而且似乎人们真正想看到的是它与其 Raspberry 口味的表亲之间的直接比较,所以这里就是 Banana Pi M5 与
    的头像 发表于 10-28 10:28 280次阅读
    Banana <b class='flag-5'>Pi</b> M5 与 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4 – 基准测试

    树莓派gpio有什么用,树莓派gpio接口及编程方法

    /Output,通用输入/输出)是树莓派提供的一组可编程的引脚,是树莓派与外部世界进行交互的重要桥梁。通过GPIO,用户可以控制外部电路,读取外部信号,实现与外部电路的交互,从而开发出
    的头像 发表于 10-22 18:09 495次阅读

    e络盟开售Raspberry Pi AI 摄像头

    安富利旗下全球电子元器件产品与解决方案分销商e络盟开售全新 Raspberry Pi AI摄像头,这是 Raspberry Pi 的最新产品,扩大了 e络盟的人工智能设备范围。
    的头像 发表于 10-10 10:09 185次阅读
    e络盟开售<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> AI 摄像头

    使用串行连接通过 Raspberry Pi 增强您的 XRP 项目

    指南更为高级。通过本指南,您将能够将 Raspberry Pi 连接到您的 XRP,从而使您的 XRP 项目更上一层楼。 传输数据: 在 Raspberry
    的头像 发表于 10-02 15:28 195次阅读
    使用串行连接<b class='flag-5'>通过</b> <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 增强您的 XRP 项目

    名单公布!树莓派5(Raspberry Pi 5)开发板免费试用!!!

    缓存,可扩展应用范围。它还支持双频Wi-Fi和蓝牙5.0连接。RP1 I/O控制器芯片由 Raspberry Pi自主设计,大大提升了其接口性能。 Raspberry
    发表于 06-27 15:40

    树莓派5,Raspberry Pi 5 评测

    )连接器,可用于之前发布的Raspberry Pi Pico Debug kit调试,或用于与其他微控制器建立UART连接。 眼尖的同学会注意到 Pi 5 的USB和以太网接口位置发
    发表于 06-19 14:51

    无缝集成工业4.0:ThingsBoard网关

    Thingsboard网关BL104 ThingsBoard物联网网关是一个指可以将数据采集转发至ThingsBoard平台的物联网网关,它使用且仅使用MQTT协议与
    的头像 发表于 05-24 15:22 449次阅读
    无缝集成工业4.0:<b class='flag-5'>ThingsBoard</b>网关

    如何将CYKIT-028 TFT模块与Raspberry Pi和ESP32微控制器结合使用?

    我目前正在探索如何将 CYKIT-028 TFT 模块与 Raspberry Pi 和 ESP32 微控制器结合使用。 不过,在选择集成开发环境(IDE)和使用 PSOC Creator 的必要性
    发表于 05-21 07:36

    Raspberry Pi树莓派使用Python实现MQTT通信设计

    这次的例子,主要讲述如何基于PYTHON的 MQTT 客户端的使用方法
    的头像 发表于 03-14 11:45 746次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>树莓派使用Python实现<b class='flag-5'>MQTT</b>通信设计

    如何通过mqtt实现光自动化?

    一个树莓派,我想用它来与 20 esp 01bords 进行通信。我决定使用 MQTT 协议进行 raspberry Pi 和 esp 01
    发表于 01-31 08:30

    震惊!居然有人给 Raspberry Pi 5 做 X 射线!

      Jeff Geerling 会做一些莫名其妙的怪事,比如用信鸽来对抗网速,不过这也是我们喜欢他视频的原因。最近,杰夫对 Raspberry Pi 5 进行了 X 光透视,揭示了
    的头像 发表于 01-10 16:42 458次阅读
    震惊!居然有人给 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 做 X 射线!

    基于Raspberry Pi 5的蜂窝物联网项目

    今天小拜年给大家带来的是来自美国的Maker Rob Lauer的基于树莓派5的蜂窝网络项目,了解如何为新的 Raspberry Pi 5 单板计算机添加低带宽蜂窝连接。
    的头像 发表于 12-25 10:55 1220次阅读
    基于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5的蜂窝物联网项目

    使用STM32 HAL库进行GPIO控制的实例

    在基于STM32微控制器的嵌入式系统开发中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常见的操作之一。通过使用STM32的HAL库,可以轻松地
    的头像 发表于 12-21 15:22 3169次阅读