分享

更多

   

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

2017-12-18  googplay


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


一.先来搭建自己的mqtt服务器
    服务器的搭建主要参考了极客工坊的一位师兄所做的贡献,原帖地址 迷你强的物联网 ,写的也很详细,我这里就简单把步骤再走一遍。
       1.购买自己的云主机
      阿里云百度云腾讯云都可以的啦,我这里是用了一个腾讯云免费体验7天的,因为学生机老是抢不到,就先用一下,不过自己也还有阿里云的一台学生机,太多也没啥用。
        如何购买呢?
        点击链接 腾讯云主机 选择好配置直接购买就可以了,我这里的主机配置是
       主机.png 
        哈哈  配置是有点低,谁让是免费的呢~
       系统是 centos 7.2 64位的
       购买好后会给你分配一个公网IP,用超级终端 PuTTy 工具登陆,
       putty.png 
      按上图填好后 点击Open,
       root.png 
      输入用户名 root 然后输入密码 注意:这里输密码是不可见的。
      如果不知道主机密码的   可以去你的主机列表重置:
       mima.png 
     登录好以后  就开始下载安装了 
    下载地址 http://emqtt.io/downloads/stable/centos7  这是稳定版本,你也可以安装最新版本
     命令 wget http://emqtt.io/downloads/stable/centos7 就开始下载了
    download.png 
   我这里保存为centos7.1了,因为我已经下载好了,这是演示了一下,这里我删除它,然后我们继续。
   解压安装包  unzip centos7
   unzip.png 
   console.png 

  解压完成后 输入上面图里的两条命令,就可以开启mqtt服务器了
  看到跟下边图一样的输出就代表成功了。 是不是很简单?
   ok.png 
  然后我们让它后台运行 先CTRL+C 然后 CTRL+C 两次 
  然后   ./bin/emqttd start
   start.png 
   看到 successfully! 就表示 运行成功了
   我们可以查看一下状态 是否在运行
   输入  ./bin/emqttd status
    running.png 
    是不是,   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库,否则会报错的。
simple.png 

    把代码编辑好后上传到板子上就可以开始操作了。
三. 开始操作!
    打开手机客户端
    连接服务器 按下图指示填好信息
    IMG_5032.PNG 
     IP填写你的IP地址  端口一定要填1883
     接下来就是实际操控了!
      tuisong.png 
     哈哈,有点乱,不过很重要,仔细看,可能不同的客户端界面不太一样,不过都大同小异。
     输入推送消息,点击publish就会看到板子上的LED灯有反应,没法自己上传视频.......
     放两张图片凑合一下?
    TIM图片20170908210612.jpg 
    有点不大清晰。。。。。。不过应该能看清楚吧,推送off, LED就会灭,返回“off-status”的状态。
    TIM图片20170908210619.jpg 
    推送on, LED就会亮,返回“on-status”的状态。





四.总结
    到这里,就结束了,你没有有收获什么呢?是不是觉得搭建自己的IoT服务器也很简单呢?嘿嘿,是的,就是这么简单。多看不如多动手,抓紧动起手来吧。
      有问题可以留言,我会及时解答的。
      欢迎访问我的个人主页 www.imliubo.me(虽然没什么东西,不过万一会更新什么有趣的东西呢,啊哈哈哈)
      祝大家生活愉快!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    来自: googplay > 《DIY》

    猜你喜欢

    0条评论

    发表

    类似文章 更多
    喜欢该文的人也喜欢 更多