打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MQTT学习笔记——树莓派MQTT客户端 使用Mosquitto和paho-python
  1. # -*- coding: utf-8 -*-    
  2. import paho.mqtt.client as mqtt  
  3. import RPi.GPIO as GPIO  
  4. import json  
  5.   
  6. # BCM GPIO编号  
  7. pins = [17,18,27,22,23,24,25,4]  
  8. def gpio_setup():  
  9.     # 采用BCM编号  
  10.     GPIO.setmode(GPIO.BCM)  
  11.     # 设置所有GPIO为输出状态,且输出低电平  
  12.     for pin in pins:  
  13.         GPIO.setup(pin, GPIO.OUT)  
  14.         GPIO.output(pin, GPIO.LOW)  
  15.           
  16. def gpio_destroy():  
  17.     for pin in pins:  
  18.         GPIO.output(pin, GPIO.LOW)  
  19.         GPIO.setup(pin, GPIO.IN)  
  20.           
  21. # 连接成功回调函数  
  22. def on_connect(client, userdata, flags, rc):  
  23.     print("Connected with result code " + str(rc))  
  24.     # 连接完成之后订阅gpio主题  
  25.     client.subscribe("gpio")  
  26.   
  27. # 消息推送回调函数  
  28. def on_message(client, userdata, msg):  
  29.     print(msg.topic+" "+str(msg.payload))  
  30.     # 获得负载中的pin 和 value  
  31.     gpio = json.loads(str(msg.payload))  
  32.   
  33.     if gpio['pin'] in pins:  
  34.         if gpio['value'] == 0:  
  35.             GPIO.output(gpio['pin'], GPIO.LOW)  
  36.         else:  
  37.             GPIO.output(gpio['pin'], GPIO.HIGH)  
  38.   
  39. if __name__ == '__main__':  
  40.     client = mqtt.Client()  
  41.     client.on_connect = on_connect  
  42.     client.on_message = on_message  
  43.     gpio_setup()  
  44.       
  45.     try:  
  46.         # 请根据实际情况改变MQTT代理服务器的IP地址  
  47.         client.connect("192.168.1.110", 1883, 60)  
  48.         client.loop_forever()  
  49.     except KeyboardInterrupt:  
  50.         client.disconnect()  
  51.         gpio_destroy()  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MQTT与kafka对比分析
ios客户端MQTT实现
鸿蒙三方库推荐MQTT【坚果派】
mqtt.fx | 一款超级好用的Mqtt客户端软件(下载、安装、使用详解)
搭建Android MQTT推送平台
Sonoff浇水定时器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服