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

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

    关注

    122

    文章

    2081

    浏览量

    110749
  • MQTT
    +关注

    关注

    5

    文章

    737

    浏览量

    25248
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    IIOT安全运维网关如何通过MQTT和AI实现工业设备的“可预测化维护”

    深圳惠志科技推出的安全运维网关通过MQTT协议的标准化通信与**“边缘+云端”的混合AI架构**,共同实现了工业设备的“可预测化维护(PdM)”。以下是其核心实现机制:1.MQTT赋能的高效数据感知
    的头像 发表于 04-17 16:00 218次阅读
    IIOT安全运维网关如何<b class='flag-5'>通过</b><b class='flag-5'>MQTT</b>和AI实现工业设备的“可预测化维护”

    Visionfive开发板通过gpio控制led灯

    用鼠标来控制它了,我选择在电脑上通过 ssh 开控制它。 如何通过 gpio 控制 LED
    发表于 04-01 06:10

    关于冷却的话题:手动控制 5V PWM 风扇,通过脚本控制,并通过内核自动控制

    ×840 255 KB 在这里,您可以看到连接到我的 VF2-8 的 Fan Click。由于缺少 microBUS,我通过 40 针 GPIO进行了连接。您还可以看到连接的风扇,一个Noctua
    发表于 03-18 07:13

    请问如何让 Sony-IMX219-Raspberry-Pi-V2-CMOS 相机与 VisionFive2 配合使用?

    我正在尝试获得我在 VisionFive2 版本 219a 上放置的备用 Sony-IMX2-Raspberry-Pi-V1.2-CMOS 相机。由于 VisionFive 2 有 1 个 × 2
    发表于 03-11 06:26

    Banana Pi BPI-CM6 – 一款与 Raspberry Pi CM4/CM5 载板兼容的 SpacemiT K1 RISC-V 系统模块

    、MIPI DSI、三个 MIPI CSI、五个 PCIe 2.1 通道、USB 3.2/2.0 接口等等。虽然它可以通过两个板对板连接器与 Raspberry Pi CM4/CM5 载板配合使用,但
    发表于 11-28 16:59

    Banana Pi BPI-CM6 – 一款与 Raspberry Pi CM4/CM5 载板兼容的 SpacemiT K1 RISC-V 系统模块

    Banana Pi BPI-CM6 系统模块 (SoM) 采用 SpacemiT K1 8 核 RISC-V 处理器,并且与大多数为 Raspberry Pi CM4 或 CM5 设计的载板兼容
    的头像 发表于 11-28 16:57 2559次阅读
    Banana <b class='flag-5'>Pi</b> BPI-CM6 – 一款与 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> CM4/CM5 载板兼容的 SpacemiT K1 RISC-V 系统模块

    ESP32-C3 mqtt操作实践

    IDF的编程模型中,对于GPIO控制也是通过API接口进行控制。 最基本的操作 gpio_r
    发表于 10-31 06:52

    工业智能网关可以通过MQTT协议对接到哪些平台

    、规则引擎等功能。 典型应用:工业设备数据实时上传至阿里云,结合大数据分析优化生产流程。 华为云IoT平台 通过MQTT协议实现设备与云端的双向通信,支持海量设备连接。 典型应用:能源管理场景中,传感器数据经网关转换后上传至华为云,进行
    的头像 发表于 09-29 11:29 840次阅读

    Banana Pi BPI-R4 Lite:新型单板计算机比 Raspberry Pi 5 更具优势

    Raspberry Pi 5(亚马逊售价 66 美元起)的替代品。 然而,它的侧重点略有不同,尤其适合网络应用。例如,它可以作为 OpenWrt 路由器的基础。Banana Pi 最新的 SBC
    的头像 发表于 08-26 16:46 1658次阅读
    Banana <b class='flag-5'>Pi</b> BPI-R4 Lite:新型单板计算机比 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 更具优势

    技能+1!如何在树莓派上使用C++控制GPIO

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 4461次阅读
    技能+1!如何在树莓派上使用C++<b class='flag-5'>控制</b><b class='flag-5'>GPIO</b>?

    GraniStudio :MQTT 协议的深度剖析

    平台的首选协议。从传感器数据采集到设备远程控制,从车间级监控到跨厂区协同,MQTT 正在重塑工业通信架构。GraniStudio 软件通过MQTT 协议的全场景整合,将其复杂的连接
    的头像 发表于 08-04 09:48 1153次阅读
    GraniStudio :<b class='flag-5'>MQTT</b> 协议的深度剖析

    【RA4L1-SENSOR】+ 一直被模仿从未被超越 + 使用MQTT上传RA4L1开发板温度到云端,并通过控制RA4L1反向点灯

    互联网远程数据上传,同样的,通过手机连接云端,就可以反向点灯,控制RA4L1上面的LED1,LED2,LDE3进行点灯控制了,这可以进阶做成很多有创意的项目。目前还没有任何人做过这方面
    发表于 06-15 17:07

    贸泽开售Raspberry Pi用于嵌入式和IIoT应用的RP2350微控制

    RP2350 微控制器。RP2350建立在Raspberry PI RP2040的成功基础上,旨在以实惠的价格提供更高的性能和安全性,非常适合嵌入式计算和工业物联网应用。   Raspberr
    发表于 05-27 14:50 1557次阅读

    如何在Raspberry Pi OS上安装SDK?

    Raspberry Pi OS 上安装 SDK
    发表于 04-30 06:45

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO
    的头像 发表于 04-21 10:39 1242次阅读
    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口<b class='flag-5'>控制</b><b class='flag-5'>GPIO</b>中断