打开APP
userphoto
未登录

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

开通VIP
micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)


先讲一下mqtt吧,相信大家也都有所了解,我就简单说一下:
       MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器的通信协议。  
       看我标红的文字,就知道mqtt协议有多厉害了吧,具体的可以去问一下度娘,这里就不在过多赘述。


一.先来搭建自己的mqtt服务器
    服务器的搭建主要参考了极客工坊的一位师兄所做的贡献,原帖地址 迷你强的物联网 ,写的也很详细,我这里就简单把步骤再走一遍。
       1.购买自己的云主机
      阿里云百度云腾讯云都可以的啦,我这里是用了一个腾讯云免费体验7天的,因为学生机老是抢不到,就先用一下,不过自己也还有阿里云的一台学生机,太多也没啥用。
        如何购买呢?
        点击链接 腾讯云主机 选择好配置直接购买就可以了,我这里的主机配置是
       
 

        哈哈  配置是有点低,谁让是免费的呢~
       系统是 centos 7.2 64位的
       购买好后会给你分配一个公网IP,用超级终端 PuTTy 工具登陆,
       
 

      按上图填好后 点击Open,
       
 

      输入用户名 root 然后输入密码 注意:这里输密码是不可见的。
      如果不知道主机密码的   可以去你的主机列表重置:
       
 

     登录好以后  就开始下载安装了 
    下载地址 http://emqtt.io/downloads/stable/centos7  这是稳定版本,你也可以安装最新版本
     命令 wget http://emqtt.io/downloads/stable/centos7 就开始下载了
    
 

   我这里保存为centos7.1了,因为我已经下载好了,这是演示了一下,这里我删除它,然后我们继续。
   解压安装包  unzip centos7
   
 

   
 

  解压完成后 输入上面图里的两条命令,就可以开启mqtt服务器了
  看到跟下边图一样的输出就代表成功了。 是不是很简单?
   
 

  然后我们让它后台运行 先CTRL+C 然后 CTRL+C 两次 
  然后   ./bin/emqttd start
   
 

   看到 successfully! 就表示 运行成功了
   我们可以查看一下状态 是否在运行
   输入  ./bin/emqttd status
    
 

    是不是,   is running!
    这就完成整个的部署了,到此为止你的MQTT服务器已经完全搭建好了,接下来就让我们开始点亮LED灯吧!


二. 远程点亮LED灯
     准备工作,准备一块esp8266 cropython开发板,esp32也行。  我这里用的是OpenIoE 的ESP8266。
        mqtt客户端,我这里用的是手机 MQTT 客户端 ,大家可以自行下载。
        话不多说,先上代码
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
fromsimple importMQTTClient
frommachine importPin
importnetwork
importtime
SSID='YOURSSID'
PASSWORD='YOURPARSSWORD'
led=Pin(2, Pin.OUT, value=1)
SERVER='119.29.244.94'         [/size][size=3]#mqtt服务器的IP[/size][size=3]
CLIENT_ID='imliubo'               #设备ID
TOPIC=b'led'                          #设备订阅的主题 客户端推送消息的主题
TOPIC2=b'ledled'                    #手机客户端订阅的主题  设备推送消息的主题
username='123123'                   #随便填。。。。
password='321321'
state=0
c=None
defsub_cb(topic, msg):
    globalstate
    print((topic, msg))
    ifmsg ==b'on':
            led.value(0)
            state=1
            c.publish(TOPIC2,'on-state',retain=True)
    elifmsg ==b'off':
            led.value(1)
            state=0
            c.publish(TOPIC2,'off-state',retain=True)
defconnectWifi(ssid,passwd):
  globalwlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid,passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
try:
  connectWifi(SSID,PASSWORD)
  server=SERVER
  c=MQTTClient(CLIENT_ID, server,0,username,password)
  c.set_callback(sub_cb)
  c.connect()
  c.subscribe(TOPIC)
  c.publish(TOPIC2,'shebeishangxian',retain=True)
  print('Connected to %s, subscribed to %s topic' % (server, TOPIC))
  whileTrue:
    c.wait_msg()
finally:
  if(cisnot None):
    c.disconnect()
  wlan.disconnect()
  wlan.active(False)

   记得先上传umqtt库,否则会报错的。
 

    把代码编辑好后上传到板子上就可以开始操作了。
三. 开始操作!
    打开手机客户端
    连接服务器 按下图指示填好信息
    
 

     IP填写你的IP地址  端口一定要填1883
     接下来就是实际操控了!
      
 

     哈哈,有点乱,不过很重要,仔细看,可能不同的客户端界面不太一样,不过都大同小异。
     输入推送消息,点击publish就会看到板子上的LED灯有反应,没法自己上传视频.......
     放两张图片凑合一下?
    
 

    有点不大清晰。。。。。。不过应该能看清楚吧,推送off, LED就会灭,返回“off-status”的状态。
    
 

    推送on, LED就会亮,返回“on-status”的状态。





四.总结
    到这里,就结束了,你没有有收获什么呢?是不是觉得搭建自己的IoT服务器也很简单呢?嘿嘿,是的,就是这么简单。多看不如多动手,抓紧动起手来吧。
      有问题可以留言,我会及时解答的。
      欢迎访问我的个人主页 www.imliubo.me(虽然没什么东西,不过万一会更新什么有趣的东西呢,啊哈哈哈)
      祝大家生活愉快!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
消息推送标准协议:MQTT
物联网核心之MQTT
MQTT(使用mosquitto做broker)做Android推送部分总结
使用 Mosquitto
S7PLC通过MQTT推送消息到手机
一文了解MQTT协议
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服