从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]

从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]去年开发了一个物联网的项目,入了很多坑,花了很多时间,不过最后终于做出了一个初代版本,也算完成了项目。为了避免自己遗忘,也为了让有兴趣学习物联网的同学少入点坑,我整理了一下,写成一个系列教程。通过这个教程,你可以从一个小白成长为可以自己开发物联网项目的菜鸟。项目主要要完成的功能也很简单,就是将传感器的数据通过互联网发送给服务器,然后服务器将数据保存在数据库里;或者通过web端的页面反向控制物联…

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述
去年开发了一个物联网的项目,入了很多坑,花了很多时间,不过最后终于做出了一个初代版本,也算完成了项目。为了避免自己遗忘,也为了让有兴趣学习物联网的同学少入点坑,我整理了一下,写成一个系列教程。通过这个教程,你可以从一个小白成长为可以自己开发物联网项目的菜鸟。
项目主要要完成的功能也很简单,就是将传感器的数据通过互联网发送给服务器,然后服务器将数据保存在数据库里;或者通过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从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
注意,现在要用鼠标右击最上面的命令提示符应用
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
选择以管理员身份运行
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
然后在输入 d: 回车
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
就来到了D盘,当然如果你放在其他盘的话就输其他盘符。
然后进入你放置解压开来的emqx服务器的文件夹,我放在了d:\emqx4里了,所以输入cd emqx4,然后用cd命令一层一层知道进入bin文件夹
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
最后输入启动服务器的命令:emqx start
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
几秒后它自己返回了emqx文件夹,说明服务已经启动了
接下去我们打开浏览器来检验一下服务是否启动,最好用chrome浏览器哦!

输入http://127.0.0.1:18083/
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
就进入了控制页面了,然后输入用户名admin,密码public 登录
在这里插入图片描述
到此,mqtt服务器正式启动完毕,怎么样,超级简单吧!

打开左侧工具栏的websocket,就可以测试mqtt数据发送了。
在这里插入图片描述
先点击主页面中的连接,就可以连接上mqtt服务器了,然后订阅一个主题为r的mqtt服务。
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
在下面的消息内发送一个主题为r,内容为”Hello world!“的消息
下面就可以看到消息的发送与接收了。
现在你肯定觉得挺无聊,自己给自己发消息有什么意思啊。不要着急,现在我们和手机来进行一下互动。如果是苹果手机,就在App store里搜索mqttool:
在这里插入图片描述
安装完并进入软件,这时你需要查一下自己电脑的ip地址,可以双击电脑右下角的wifi符号,然后进入属性查看。我的是10.0.0.252,大家的和我的肯定不一样哦,自己查!一般局域网内都是192.168.0.***之类的,我的比较特殊,不要介意。
然后打开手机上的软件
在这里插入图片描述
Host就是你电脑的ip地址,Port填1883,然后点击Connect,连接成功后再选择下方的“Publish”
从零开始开发物联网项目(1)——mqtt服务器搭建[通俗易懂]
Topic就输入我们网页里之前订阅的”r”,Message就随便填了,然后点击Publish发送,再回到计算机网页端看看是否收到消息了
在这里插入图片描述
这样,手机和电脑端的网页就能互通消息了,当然也可以手机端也订阅(Subscribe)一个主题,电脑端发送这个主题的消息,手机端也可以收到,我这里就不再写了,自己多玩玩吧。

好了,今天就写到这里了,我们已经成功的搭建了mqtt服务器,并且可以和手机端互动消息了。下一节我们会具体来聊聊mqtt协议。
本文章发在我的微信公众号了,大家有兴趣可以关注我的公众号,那里更新更及时点。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141050.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webpack-ES6转ES5[通俗易懂]

    webpack-ES6转ES5[通俗易懂]@webpack-ES6转ES5的babel-loader安装babel-loader:npminstall–savedevbabel-loader@7babel-corebabel-preset-es2015用法:在webpack配置对象中,需要将babel-loader添加到module列表中module:{rules:[{test:/\.m?js$/,exclude:/(node_modules|bower_c

    2022年9月17日
    0
  • 无人机wifi图传模块(手机远程控制)

    现在手机的省内流量也便宜了,是时候考虑用手机3G,4G网络来超远程控制无人机、无人车、无人船了。超远程的意思是经过IP互联网,可以操控另一个城市或另一个国家的无人机。网灵科技的“全球鹰”无人机远程控制模块就是这个思路。既然是DIY,那么就要省钱,咱不买“全球鹰”远控模块,就用个闲置的安卓手机放到无人机上去吧,手机可以3G、4G上网,手机摄像头可以做图传用,手机再想办法跟飞控的数传口连接通信,实现数传和远程手柄遥控。

    2022年4月17日
    250
  • nginx默认安装80端口修改[通俗易懂]

    nginx默认安装80端口修改[通俗易懂]nginx默认安装80端口修改nginx默认安装80端口修改nginx默认安装80端口修改nginx安装启动发现80默认端口冲突,一般是和tomcat服务冲突了。所以在这里我们直接取修改nginx的默认端口。通过whereisnginx我们知道了nginx的配置文件目录在配置文件目录下的sites-available目录中我们找到了default文件,进行修改,修改前先备份。vi进去后将80端口修改成8888端口号修改后重启nginx,启动后没有报错。改对应映射nginx.co

    2022年9月4日
    2
  • .NET WinForm中使用Timer定时更新ProgressBar的进度「建议收藏」

    .NET WinForm中使用Timer定时更新ProgressBar的进度

    2022年3月11日
    37
  • PermitRootLogin是基于UID还是用户名?

    PermitRootLogin是基于UID还是用户名?Sometimesitisfuntodigabitdeeperintohowthingsworkjusttosatisfyyourcuriositywhilelearningsomethingnew,likePermitRootLogin,forexample.DoesitchecktheUIDortheusername?Tod…

    2022年5月20日
    49
  • 我竟然不再抗拒 Java 的类加载机制了

    我竟然不再抗拒 Java 的类加载机制了很长一段时间里,我对Java的类加载机制都非常的抗拒,因为我觉得太难理解了。但为了成为一名优秀的Java工程师,我决定硬着头皮研究一下。01、字节码在聊Java类加载机制之前,需要先了解一下Java字节码,因为它和类加载机制息息相关。计算机只认识0和1,所以任何语言编写的程序都需要编译成机器码才能被计算机理解,然后执行,Java也不例外。Java在诞生的时候喊出了…

    2022年5月10日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号