去年开发了一个物联网的项目,入了很多坑,花了很多时间,不过最后终于做出了一个初代版本,也算完成了项目。为了避免自己遗忘,也为了让有兴趣学习物联网的同学少入点坑,我整理了一下,写成一个系列教程。通过这个教程,你可以从一个小白成长为可以自己开发物联网项目的菜鸟。
项目主要要完成的功能也很简单,就是将传感器的数据通过互联网发送给服务器,然后服务器将数据保存在数据库里;或者通过web端的页面反向控制物联网硬件,实现类似智能开关之类的功能。
现在比较流行的物联网方式主要有两种,lora和nbiot,当然如果仅仅在家里使用的话用wifi也可以。关于这两种物联网的简介自己去百度吧。这两种方式不太一样,lora需要自己搭建基站,是星系网络连接,所有的节点都和基站通讯,基站负责将数据上传到服务器,基站可以使用wifi,或者4G;nbiot则完全不一样,它的每个节点都自己接入网络,直接上传数据到服务器。两种各有优缺点吧,不过lora在具体安装阶段比较麻烦,因为有时候节点与基站之间距离太远,这时还得加上中继,安装的工作量比较大。nbiot就简单了,完全使用移动运营商的网络。
向服务器上传数据的方式有很多种,不过比较流行的是mqtt协议,首先我们来学习如何搭建mqtt服务器,以及使用手动指令的方式使用esp8266 wifi模块来发送和接收数据。
mqtt服务器搭建
mqtt服务器有很多选择,这里选择emqtt,因为它的搭建实在是非常简单,只要会用电脑的同学都可以顺利完成。首先呢先去
https://www.emqx.io/cn/downloads
下载emqtt服务器,就选择最新的,支持windows的版本吧,下载下来是个zip压缩文件。然后将它解压在D盘(或者其他盘)根目录方便一点,解压后进去就是一个名为emqx的文件夹
文件夹里有这些文件。好了,先不管这些,现在我们进入cmd控制台,如果是win10,左下角框内输入cmd
注意,现在要用鼠标右击最上面的命令提示符应用
选择以管理员身份运行
然后在输入 d: 回车
就来到了D盘,当然如果你放在其他盘的话就输其他盘符。
然后进入你放置解压开来的emqx服务器的文件夹,我放在了d:\emqx4里了,所以输入cd emqx4,然后用cd命令一层一层知道进入bin文件夹
最后输入启动服务器的命令:emqx start
几秒后它自己返回了emqx文件夹,说明服务已经启动了
接下去我们打开浏览器来检验一下服务是否启动,最好用chrome浏览器哦!
输入http://127.0.0.1:18083/
就进入了控制页面了,然后输入用户名admin,密码public 登录
到此,mqtt服务器正式启动完毕,怎么样,超级简单吧!
打开左侧工具栏的websocket,就可以测试mqtt数据发送了。
先点击主页面中的连接,就可以连接上mqtt服务器了,然后订阅一个主题为r的mqtt服务。
在下面的消息内发送一个主题为r,内容为"Hello world!“的消息
下面就可以看到消息的发送与接收了。
现在你肯定觉得挺无聊,自己给自己发消息有什么意思啊。不要着急,现在我们和手机来进行一下互动。如果是苹果手机,就在App store里搜索mqttool:
安装完并进入软件,这时你需要查一下自己电脑的ip地址,可以双击电脑右下角的wifi符号,然后进入属性查看。我的是10.0.0.252,大家的和我的肯定不一样哦,自己查!一般局域网内都是192.168.0.***之类的,我的比较特殊,不要介意。
然后打开手机上的软件
Host就是你电脑的ip地址,Port填1883,然后点击Connect,连接成功后再选择下方的“Publish”
Topic就输入我们网页里之前订阅的"r”,Message就随便填了,然后点击Publish发送,再回到计算机网页端看看是否收到消息了
这样,手机和电脑端的网页就能互通消息了,当然也可以手机端也订阅(Subscribe)一个主题,电脑端发送这个主题的消息,手机端也可以收到,我这里就不再写了,自己多玩玩吧。
好了,今天就写到这里了,我们已经成功的搭建了mqtt服务器,并且可以和手机端互动消息了。下一节我们会具体来聊聊mqtt协议。
本文章发在我的微信公众号了,大家有兴趣可以关注我的公众号,那里更新更及时点。