19975浏览
查看: 19975|回复: 4

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

[复制链接]


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

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


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

  解压完成后 输入上面图里的两条命令,就可以开启mqtt服务器了
  看到跟下边图一样的输出就代表成功了。 是不是很简单?
  micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)图8
  然后我们让它后台运行 先CTRL+C 然后 CTRL+C 两次
  然后   ./bin/emqttd start
  micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)图9
   看到 successfully! 就表示 运行成功了
   我们可以查看一下状态 是否在运行
   输入  ./bin/emqttd status
   micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)图10
    是不是,   is running!
    这就完成整个的部署了,到此为止你的MQTT服务器已经完全搭建好了,接下来就让我们开始点亮LED灯吧!


二. 远程点亮LED灯
     准备工作,准备一块esp8266 cropython开发板,esp32也行。  我这里用的是OpenIoE 的ESP8266。
        mqtt客户端,我这里用的是手机 MQTT 客户端 ,大家可以自行下载。
        话不多说,先上代码
[mw_shl_code=python,true]from simple import MQTTClient
from machine import Pin
import network
import time

SSID="YOURSSID"
PASSWORD="YOURPARSSWORD"

led=Pin(2, Pin.OUT, value=1)

SERVER = "119.29.244.94"         
#mqtt服务器的IP
CLIENT_ID = "imliubo"               #设备ID
TOPIC = b"led"                           #设备订阅的主题 客户端推送消息的主题
TOPIC2 =b"ledled"                     #手机客户端订阅的主题  设备推送消息的主题
username='123123'                    #随便填。。。。
password='321321'
state = 0
c=None
def sub_cb(topic, msg):
    global state
    print((topic, msg))
    if msg == b"on":
            led.value(0)
            state = 1
            c.publish(TOPIC2,"on-state",retain= True)
    elif msg == b"off":
            led.value(1)
            state = 0
            c.publish(TOPIC2,"off-state",retain= True)
def connectWifi(ssid,passwd):
  global wlan
  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))

  while True:
    c.wait_msg()
finally:
  if(c is not None):
    c.disconnect()
  wlan.disconnect()
  wlan.active(False)[/mw_shl_code]

   记得先上传umqtt库,否则会报错的。
micropython之动手搭建自己的MQTT服务器并实现通信(点亮led)图11

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





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

imliubo  见习技师
 楼主|

发表于 2017-9-8 21:43:45

沙发给自己
回复

使用道具 举报

pATAq  版主

发表于 2017-9-16 13:55:40

支持一下~楼主你这是什么APP?自己写的吗,有机会你可以试试Play上的IoT Dashboard,功能更多
回复

使用道具 举报

kylongmu  学徒

发表于 2017-10-20 22:01:03

按你的步骤测试下来,刚开始都没问题,等5分钟左右再来发控制命令给板子就没有任何反应了,用mqtt.fx测试服务器端是好的。
重启测试,依然是运行一段时间后板子就没反映,tty看板子没有死机,可以终止程序。
widora air v6的板子。
回复

使用道具 举报

kylongmu  学徒

发表于 2017-10-20 22:01:16

按你的步骤测试下来,刚开始都没问题,等5分钟左右再来发控制命令给板子就没有任何反应了,用mqtt.fx测试服务器端是好的。
重启测试,依然是运行一段时间后板子就没反映,tty看板子没有死机,可以终止程序。
widora air v6的板子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail