从零开始开发物联网项目(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytorch 安装

    Pytorch 安装Pytorch安装已有Cuda9.0,anaconda3,用conda命令安装pytorchcondainstallpytorchtorchvisioncuda90-cpytorch验证是否安装成功python然后依次输入from__future__importprint_functionimporttorchx=torch.rand(5,3)p…

    2022年6月24日
    31
  • 什么叫结构化数据半结构化数据和非结构化数据(xml是非结构化数据)

    计算机信息化系统中的数据分为结构化数据和非结构化数据、半结构化数据。结构化数据结构化数据,是指由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。也称作行数据,一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。比如: id name gen…

    2022年4月17日
    53
  • layui弹出层html,layer弹出层「建议收藏」

    layui弹出层html,layer弹出层「建议收藏」layer弹出层,怎么只让他弹出一次.在线等我昨天用这个插件的时候也有这个问题,弹出内容大了就居不了中。这是组件不完美的地方,他设置了top和left值,而且是固定的。这种弹出层都是绝对定位的所以没办法用margin:auto0神马的居中。解决方案主要两种:1.修改在浏览器里面调试模式。jquerylayer怎么弹出指定的html内元素一个基本的弹出层应该满足以下需CSS布局HTML小编…

    2022年7月13日
    15
  • vim 查找字符串「建议收藏」

    vim 查找字符串「建议收藏」在命令模式下输入/然后输入你需要查找的字符串即可。见下图:  可以使用n继续向下查找下一个名称为job的字符串。  可以使用N向上查找名称为job的字符串。  但每次查找完成后高亮并不会消失,可以在命令行模式输入:nohlsearch或者:noh,也可以输入:setnohlsearch,设置不用高亮查询会让你的查询不会高亮显示,如果需要高亮显示可以输入:sethlsearch。…

    2022年6月17日
    152
  • dex文件详解

    dex文件详解1、基本概念能被DVM虚拟机识别,加载并执行的文件格式2、生成dex文件1、通过IDE自动帮我们build生成2、手动通过dx命令去生成dex文件3、在手机上手动运行dex文件3、使用dx命令来生成dex文件首先得要先配置dx环境变量,这个环境变量怎么配呢?找到的sdk的安装目录,然后进入build-tools目录,这里是你电脑上的所有sdk的安装目录,随便选择一个进去,就可以知道dx.b

    2022年6月27日
    62
  • jquery插件treetable 动态加载问题

    jquery插件treetable 动态加载问题使用jquery插件treetable增加后刷新table时,树形样式丢失在增加或修改后,动态加载html,开始就直接使用$(“#treeTabletbody”).empty().append(data);这个用法是错误的,后来换成//成功后刷新表格 $(“#treeTabletbody”).empty();varhtml=data.htmlTable;…

    2022年5月27日
    130

发表回复

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

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