树莓派mqtt通信
树莓派mqtt通信
monster13 发表于2年前
树莓派mqtt通信
  • 发表于 2年前
  • 阅读 63
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 树莓派安装mqtt-paho模块实现远程服务器通信

1、sudo pip install paho-mqtt

2、python代码

# -*- coding: utf-8 -*- 
import paho.mqtt.client as mqtt
# import RPi.GPIO as GPIO
import json,sys


# if sys.version_info < (3, 0):
#     reload(sys)
#     sys.setdefaultencoding('utf8')
# else:
#     raw_input = input
username='public'
password='123456'
hostname='xxx.xxx.xxx.xxx'

# BCM GPIO编号
pins = [17,18,27,22,23,24,25,4]
def gpio_setup():
    # 采用BCM编号
    GPIO.setmode(GPIO.BCM)
    # 设置所有GPIO为输出状态,且输出低电平
    for pin in pins:
        GPIO.setup(pin, GPIO.OUT)
        GPIO.output(pin, GPIO.LOW)
       
def gpio_destroy():
    for pin in pins:
        GPIO.output(pin, GPIO.LOW)
        GPIO.setup(pin, GPIO.IN)
       
# 连接成功回调函数
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    # 连接完成之后订阅gpio主题
    client.subscribe("gpio")

# 消息推送回调函数 .decode("utf-8")
def on_message(client, userdata, msg):

    print(msg.topic+""+str(msg.payload))
    #获得负载中的pin 和 value
    # gpio = json.loads(str(msg.payload))

    # if gpio['pin'] in pins:
    #     if gpio['value'] == 0:
    #         GPIO.output(gpio['pin'], GPIO.LOW)
    #     else:
    #         GPIO.output(gpio['pin'], GPIO.HIGH)

if __name__ == '__main__':
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    # gpio_setup()
   
    try:
        # 请根据实际情况改变MQTT代理服务器的IP地址及账户密码认证
        #client.username_pw_set(username,password)
        client.connect("xxx.xxx.xxx.xxx", 1883, 60)
        client.loop_forever()
    except KeyboardInterrupt:
        client.disconnect()
        gpio_destroy()

发送数据为{"pin":12,"value":1}

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 4
博文 19
码字总数 3954
×
monster13
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: