0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Thingsboard通過MQTT進(jìn)行Raspberry Pi GPIO控制

454398 ? 來源:wv ? 2019-10-12 14:32 ? 次閱讀

步驟1:先決條件和接線圖

如何使用Thingsboard通過MQTT進(jìn)行Raspberry Pi GPIO控制

服務(wù)器設(shè)置

您將需要訪問Thingsboard服務(wù)器。使用Live Demo或《安裝指南》來安裝Thingsboard。

硬件和插腳列表

Raspberry Pi-我們將使用Raspberry Pi 3 Model B,但您也可以使用其他任何型號(hào)

引線和相應(yīng)的電阻

陰陽跳線

接線圖

將允許控制所有可用GPIO引腳的狀態(tài),我們建議在這些引腳上連接一些LED以提高可視性。您可以使用此步驟所附的基本架構(gòu)。您也可以為每個(gè)LED添加一個(gè)電阻。

步驟2:對(duì)Raspberry Pi進(jìn)行編程

MQTT庫安裝

以下命令將安裝MQTT Python庫:

$ sudo pip install paho-mqtt

應(yīng)用程序源代碼

我們的應(yīng)用程序由經(jīng)過注釋的單個(gè)python腳本組成。源代碼可在此處獲取。

您將需要修改 THINGSBOARD_HOST 常量以匹配Thingsboard服務(wù)器安裝IP地址或主機(jī)名。如果您正在使用實(shí)時(shí)演示服務(wù)器,請(qǐng)使用“ demo.thingsboard.io” 。

ACCESS_TOKEN 常量的值對(duì)應(yīng)于預(yù)先配置的演示數(shù)據(jù)中的示例Raspberry Pi設(shè)備。 。如果您正在使用實(shí)時(shí)演示服務(wù)器,請(qǐng)獲取預(yù)配置的“ Raspberry Pi演示設(shè)備” 的訪問令牌。

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()

運(yùn)行應(yīng)用程序

此簡單命令將啟動(dòng)應(yīng)用程序:

python gpio.py

步驟3:數(shù)據(jù)可視化

為簡化此說明,我們?cè)诿總€(gè)Thingboard安裝中可用的演示數(shù)據(jù)中都包含了“ Raspberry PI GPIO演示儀表板”。當(dāng)然,您可以修改此儀表板:調(diào)整,添加,刪除小部件等。您可以通過以租戶管理員身份登錄來訪問此儀表板。

在本地安裝的情況下:

登錄名:tenant@thingsboard.org

密碼:租戶

如果是實(shí)時(shí)演示服務(wù)器:

登錄名:您的實(shí)時(shí)演示用戶名(電子郵件)

密碼:您的實(shí)時(shí)演示密碼

有關(guān)如何獲取帳戶的更多詳細(xì)信息,請(qǐng)參見實(shí)時(shí)演示頁面。/p》

登錄后,打開 Dashboards-》 Raspberry PI GPIO Demo Dashboard 頁面。您應(yīng)觀察帶有GPIO控制和狀態(tài)面板的演示儀表板?,F(xiàn)在,您可以使用控制面板切換GPIO的狀態(tài)。結(jié)果,您將在設(shè)備和狀態(tài)面板上看到LED狀態(tài)更改。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1684

    瀏覽量

    105403
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    641

    瀏覽量

    22362
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹莓派gpio有什么用,樹莓派gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓派提供的一組可編程的引腳,是樹莓派與外部世界進(jìn)行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀取外部信號(hào),實(shí)現(xiàn)與外部電路的交互,從而開發(fā)出
    的頭像 發(fā)表于 10-22 18:09 ?138次閱讀

    e絡(luò)盟開售Raspberry Pi AI 攝像頭

    安富利旗下全球電子元器件產(chǎn)品與解決方案分銷商e絡(luò)盟開售全新 Raspberry Pi AI攝像頭,這是 Raspberry Pi 的最新產(chǎn)品,擴(kuò)大了 e絡(luò)盟的人工智能設(shè)備范圍。
    的頭像 發(fā)表于 10-10 10:09 ?118次閱讀
    e絡(luò)盟開售<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> AI 攝像頭

    使用串行連接通過 Raspberry Pi 增強(qiáng)您的 XRP 項(xiàng)目

    指南更為高級(jí)。通過本指南,您將能夠?qū)?Raspberry Pi 連接到您的 XRP,從而使您的 XRP 項(xiàng)目更上一層樓。 傳輸數(shù)據(jù): 在 Raspberry
    的頭像 發(fā)表于 10-02 15:28 ?143次閱讀
    使用串行連接<b class='flag-5'>通過</b> <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 增強(qiáng)您的 XRP 項(xiàng)目

    名單公布!樹莓派5(Raspberry Pi 5)開發(fā)板免費(fèi)試用?。?!

    緩存,可擴(kuò)展應(yīng)用范圍。它還支持雙頻Wi-Fi和藍(lán)牙5.0連接。RP1 I/O控制器芯片由 Raspberry Pi自主設(shè)計(jì),大大提升了其接口性能。 Raspberry
    發(fā)表于 06-27 15:40

    樹莓派5,Raspberry Pi 5 評(píng)測(cè)

    )連接器,可用于之前發(fā)布的Raspberry Pi Pico Debug kit調(diào)試,或用于與其他微控制器建立UART連接。 眼尖的同學(xué)會(huì)注意到 Pi 5 的USB和以太網(wǎng)接口位置發(fā)
    發(fā)表于 06-19 14:51

    無縫集成工業(yè)4.0:ThingsBoard網(wǎng)關(guān)

    Thingsboard網(wǎng)關(guān)BL104 ThingsBoard物聯(lián)網(wǎng)網(wǎng)關(guān)是一個(gè)指可以將數(shù)據(jù)采集轉(zhuǎn)發(fā)至ThingsBoard平臺(tái)的物聯(lián)網(wǎng)網(wǎng)關(guān),它使用且僅使用MQTT協(xié)議與
    的頭像 發(fā)表于 05-24 15:22 ?377次閱讀
    無縫集成工業(yè)4.0:<b class='flag-5'>ThingsBoard</b>網(wǎng)關(guān)

    如何將CYKIT-028 TFT模塊與Raspberry Pi和ESP32微控制器結(jié)合使用?

    我目前正在探索如何將 CYKIT-028 TFT 模塊與 Raspberry Pi 和 ESP32 微控制器結(jié)合使用。 不過,在選擇集成開發(fā)環(huán)境(IDE)和使用 PSOC Creator 的必要性
    發(fā)表于 05-21 07:36

    Raspberry Pi樹莓派使用Python實(shí)現(xiàn)MQTT通信設(shè)計(jì)

    這次的例子,主要講述如何基于PYTHON的 MQTT 客戶端的使用方法
    的頭像 發(fā)表于 03-14 11:45 ?702次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>樹莓派使用Python實(shí)現(xiàn)<b class='flag-5'>MQTT</b>通信設(shè)計(jì)

    如何通過mqtt實(shí)現(xiàn)光自動(dòng)化?

    一個(gè)樹莓派,我想用它來與 20 esp 01bords 進(jìn)行通信。我決定使用 MQTT 協(xié)議進(jìn)行 raspberry Pi 和 esp 01
    發(fā)表于 01-31 08:30

    震驚!居然有人給 Raspberry Pi 5 做 X 射線!

    ? Jeff Geerling 會(huì)做一些莫名其妙的怪事,比如用信鴿來對(duì)抗網(wǎng)速,不過這也是我們喜歡他視頻的原因。最近,杰夫?qū)?Raspberry Pi 5 進(jìn)行了 X 光透視,揭示了
    的頭像 發(fā)表于 01-10 16:42 ?419次閱讀
    震驚!居然有人給 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 做 X 射線!

    使用STM32 HAL庫進(jìn)行GPIO控制的實(shí)例

    在基于STM32微控制器的嵌入式系統(tǒng)開發(fā)中,GPIO(GeneralPurposeInput/Output)控制是其中最基本、最常見的操作之一。通過使用STM32的HAL庫,可以輕松地
    的頭像 發(fā)表于 12-21 15:22 ?2811次閱讀

    RP2040和Raspberry Pi的區(qū)別

    作為 Raspberry Pi 基金會(huì)推出的首款微控制器產(chǎn)品,RP2040 標(biāo)志著以單板計(jì)算機(jī) (SBC) 而聞名的 Raspberry Pi
    的頭像 發(fā)表于 11-16 17:37 ?851次閱讀
    RP2040和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>的區(qū)別

    Banana Pi BPI-M6(Raspberry Pi 5 替代品)初始設(shè)置及固件燒錄

    Banana Pi BPI-M6(Raspberry Pi 5 替代品)初始設(shè)置及固件燒錄
    的頭像 發(fā)表于 11-09 09:24 ?1074次閱讀
    Banana <b class='flag-5'>Pi</b> BPI-M6(<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 替代品)初始設(shè)置及固件燒錄

    Banana Pi BPI-M6開源硬件開發(fā)板介紹以及與 Raspberry Pi 5 的比較

    Banana Pi BPI-M6開源硬件開發(fā)板介紹以及與 Raspberry Pi 5 的比較
    的頭像 發(fā)表于 11-09 09:22 ?660次閱讀
    Banana <b class='flag-5'>Pi</b> BPI-M6開源硬件開發(fā)板介紹以及與 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 的比較

    raspberry pi 0應(yīng)多少伏供電?

    raspberry pi 0 5V 2A供電板太熱,5V 1A可以嗎
    發(fā)表于 11-07 06:52