先讲一下mqtt吧,相信大家也都有所了解,我就简单说一下: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器的通信协议。 看我标红的文字,就知道mqtt协议有多厉害了吧,具体的可以去问一下度娘,这里就不在过多赘述。 一.先来搭建自己的mqtt服务器 服务器的搭建主要参考了极客工坊的一位师兄所做的贡献,原帖地址 迷你强的物联网 ,写的也很详细,我这里就简单把步骤再走一遍。 1.购买自己的云主机 阿里云百度云腾讯云都可以的啦,我这里是用了一个腾讯云免费体验7天的,因为学生机老是抢不到,就先用一下,不过自己也还有阿里云的一台学生机,太多也没啥用。 如何购买呢? 点击链接 腾讯云主机 选择好配置直接购买就可以了,我这里的主机配置是 哈哈 配置是有点低,谁让是免费的呢~ 系统是 centos 7.2 64位的 购买好后会给你分配一个公网IP,用超级终端 PuTTy 工具登陆, 按上图填好后 点击Open, 输入用户名 root 然后输入密码 注意:这里输密码是不可见的。 如果不知道主机密码的 可以去你的主机列表重置: 登录好以后 就开始下载安装了 下载地址 这是稳定版本,你也可以安装最新版本 命令 wget 就开始下载了 我这里保存为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] 纯文本查看 复制代码?010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354fromsimple importMQTTClientfrommachine importPinimportnetworkimporttimeSSID='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' #设备IDTOPIC=b'led' #设备订阅的主题 客户端推送消息的主题TOPIC2=b'ledled' #手机客户端订阅的主题 设备推送消息的主题username='123123' #随便填。。。。password='321321'state=0c=Nonedefsub_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(虽然没什么东西,不过万一会更新什么有趣的东西呢,啊哈哈哈) 祝大家生活愉快!
|