极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 30393|回复: 14

【迷你强的物联网】起始篇-简介与MQTT服务器【从零开始搭建自己的物联网系统】

[复制链接]
发表于 2016-8-24 16:39:59 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2016-9-12 09:09 编辑

简介
此为系列文章,主要写什么是物联网,当然啦,这个概念过于抽象,所以我会从自己动手构建出一个完整的物联网系统这个方式来折腾。  
这个项目也会是一个连载项目,完成一部分就会发布出来,会同步更新于工坊论坛与我的公众号和迷你强的Blog,当然,更新频率和周期就不做任何保证了,毕竟我也是边做边学习的过程,掉进坑里一两周爬不出来也是比较正常的。  
从零开始构建一个完整的物联网,我们将使用完整的开源工具来完成这件事(符合教育的基本要求,所有的东西都可以触及底层),当然一个完整功能的物联网肯定会包含传感器硬件,执行硬件,服务器,或者还有数据存储服务器和用户界面等相关的东西,属于系统工程咯。。。  
目前的极简模型设计暂时分为三部分,物理层硬件,服务器,和用户交互界面(其他想到再说)   
硬件部分:
我将使用  
OCROBOT通用原型构建平台  来构建
服务器:
会搭建一个基于MQTT协议的服务器,后期因为节约时间会使用赞助商或者平台商的开放式平台
用户交互界面:
光有数据肯定不行啦,肯定要有展示数据的手段和方法,所以我们需要一个用户界面,这个部分我会给大家展示如何简单的做一个web界面来展示数据和与硬件进行互动,当然到后面的案例肯定也是用开放式平台啦(毕竟人家弄了很久,很成熟了嘛)。  
主要用到的软件:
  • python
  • flask这款基于python的web框架
  • 当然还会有web前段的各种框架html5相关的东西,不过我们就简单涉猎,否则会占用大量时间
  • 也会有例如mysql数据库相关的知识介绍,不过都是简单,详细学习可以参阅更系统的教程
其他条件:
  • 基本的互联网接入条件,好歹能上网,最好有wifi,没有也没啥关系
  • 最好环境里有路由器并且是自动分配IP的,因为我们不会讲解手工配置IP的过程(自己研究)。
如何构建一个MQTT服务器
mqtt_logo.png
MQTT协议,由IBM公司及合作伙伴于1999年发明了此协议,随后协议开源。MQTT非常适合用于物联网环境,客户端非常简单,几乎在所有平台均有可用的代码,并且数据通过MQTT服务器实现M2M消息传递。  
目前迷你强目测此协议应该属于实时上的物联网协议标准了,本强非常非常看好^_^
很多的开放物联网平台以及基础互联网运营商均有提供,不过这些我们以后再说,我们先讲如何自己完整的构建一个MQTT服务器。
EMQTT(服务器的搭建)
emqlogo.png
强烈推荐EMQTT 非常非常棒的国产开源MQTT服务器软件,并且是一款非常高性能的服务器,大家可以去他们的官网了解详细信息以及相关的文档,我们就简单介绍下如何安装及启动服务。  
构建步骤
  • 准备一个Ubuntu Linux环境,推荐使用虚拟机环境,具体的搭建过程网上的教程非常多,我们这里就直接掠过了
    • 推荐使用免费的VirtualBox虚拟机
    • 有条件的也可使用VMware ESXI的免费虚拟化服务器
    • ubuntu系统,我使用的为14.04 Server版本,其他版本可能略有不同,请直接查阅EMQTT官网说明文档
  • 系统OK的状态
    SystemOk.png
    当然有提示升级到16.04什么的,这些不重要,我们不去管他。
  • 首先要运行个命令更新下系统  
    sudo apt-get update
    update.png
    刷了好一会,挺酷的
  • 然后我们前往EMQTT的官网,进入下载页面
    DownPage.png
    我们会去复制UBUNTU的客户端链接()
    http://emqtt.com/static/brokers/emqttd-ubuntu64-1.1.3-20160819.zip
  • 用wgte工具将安装文件下载下来  
    wget http://emqtt.com/static/brokers/ ... -1.1.3-20160819.zip
    downIn.png
    开始下载,需要耐性的等待,根据速度情况等待一定的时间。。。。。。。  
    downok.png
    显示这样就下载OK了啦(可以使用ls命令来查看刚刚下载好的文件,我就不截图了。。。)
  • 然后我们需要解压缩这个zip压缩包,不过ubuntu系统模块没有zip工具,顺手就下载个unzip这个解包工具吧
    sudo apt-get install unzip
    unzipSetup.png
    这样就安装好了
    服务器的安装与部署
  • 将服务器文件包解压,使用命令  
    unzip emqttd-ubuntu64-1.1.3-20160819.zip
    unzip.png
  • 完成后使用ls查看下
    lsmqttd.png
    其中红色的为压缩包,蓝色的就是我们解压出来的文件目录了
  • 使用cd命令进入目录   cd emqttd cdemqttd.png
    顺便用ls命令看下目录里面的东东
  • 启动服务器     
    ./bin/emqttd console
    EMQTTGO.png
    如图所示,服务器就正常启动并工作了,我们可以按Ctry+C键将其切换到后台程序运行
  • 服务器工作后,会监听四个端口,1883,8883,8083,18083,对应的服务参阅下表
      端口号       | 服务类型
    —————- | ————-
    1883        | MQTT协议端口
    8883        | MQTT(SSL)端口
    8083        | MQTT(WebSocket), HTTP API端口
    18083       | Dashboard管理控制台端口  
  • Dashboard管理控制台端口的默认登陆账号是 admin 密码为 public 请立即登陆修改默认密码
  • 来测试下服务器是否正常工作,需要一个mqtt的客户端,各个语言下均有对应的库,不过我们目前只是测试,所以使用一个java的成品客户端
    运行如下图
    MqttC.png
  • 点击此新建一个mqtt链接  
    mqttconfig01.png
  • 然后填写刚才创建的服务器的IP地址(我的服务器是192.168.100.55)与客户端名称(如没有特殊要求随机生成的就不错)
    mqttconfig02.png
  • 点击右下角的Open connection 即可建立链接(会询问你是否保存链接信息,是或者否均可),正常链接后如下图所示为绿色
    mqttconfig03.png
  • 点击绿色的选项卡即进入客户端的界面,上面框选的部分为发送消息,下面框选的为订阅消息
    mqttconfig04.png
  • 如何使用呢?目前要测试下服务器是否正常运行,所以我们先订阅一个主题,然后再向这个主题发送一条消息看是否能正常接受
    • 首先,点击New 然后输入任意的主题(随意指定) 点击Subscribe
      mqttconfig05.png
    • 点击标签,这样这个主题就被订阅了,如果服务器收到关于任何这个信息都会推送过来
      mqttconfig06.png
    • 然后我们来发一条消息测试下(上面填写需要推送到的主题,下面写推送的内容)然后点击Publish就会发送出去
      mqttconfig07.png
    • 测试结果(如果如图所示,订阅区收到消息,说明服务器工作正常,测试成功)
      mqttconfig08.png


本文主要讲解物联网的核心组件MQTT服务器的搭建过程,虽然我们是在本地环境下进行搭建测试,不过实际使用中,这个服务器必须在公网环境,所以实际部署时,推荐在各种云主机或者使用公开的MQTT服务器进行测试
本强后期的实际使用教程也会使用赞助商或者公有云的服务。
如果你懒得自己弄,或者没有条件可以使用网上公开的服务器
iot.eclipse.org  
mqttconfig09.png   
同样也是很好用的,本节内容就到这里了,下节内容,我们将说如何让arduino通过以太网网来链接MQTT服务器发送数据


回复

使用道具 举报

发表于 2016-8-25 11:24:31 | 显示全部楼层
搞个openwrt的盒子或者路由在上面建个MQTT服务器,就可以随便玩了,再买个ESP8266模块作客户端就可以玩遥控灯了,稳定又可靠.
回复 支持 1 反对 0

使用道具 举报

发表于 2016-8-24 23:29:23 | 显示全部楼层
定!!!!!!
回复 支持 反对

使用道具 举报

发表于 2016-8-25 00:54:22 | 显示全部楼层
。。。。这太复杂了。。。看着都觉得眼睛疼。。。楼主 你辛苦鸟~~~
其实如果不需要数据展示,用LNMP或者LAMP,甚至WAMP加上少量PHP代码都可以完成数据收集和数据库存储工作。(好吧其实PHP我连入门都没有。。。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-25 09:10:14 | 显示全部楼层
darkorigin 发表于 2016-8-25 00:54
。。。。这太复杂了。。。看着都觉得眼睛疼。。。楼主 你辛苦鸟~~~
其实如果不需要数据展示,用LNMP或者LA ...


这个只是介绍一下构建的过程,如果使用的话,直接用公开的现成的就好了,帖子最后,不是介绍了一个免费的公开服务器么?
回复 支持 反对

使用道具 举报

发表于 2016-8-25 12:16:06 | 显示全部楼层
先顶下,
描述得很详细,
然而还未完全看明白...
回复 支持 反对

使用道具 举报

发表于 2016-8-25 14:50:09 | 显示全部楼层
顶一下,期待更新
回复 支持 反对

使用道具 举报

发表于 2016-8-26 01:17:47 | 显示全部楼层
迷你强 发表于 2016-8-25 09:10
这个只是介绍一下构建的过程,如果使用的话,直接用公开的现成的就好了,帖子最后,不是介绍了一个免费 ...

其实还是基本没看明白。。。原谅我的英语老师。。。
哎~~~~
没有现成的客户端么?还是就那个JAVA?
没看懂这玩意比一般的HTTP方式物联网服务器区别在哪里。。。(好吧。。。其实是我比较差)
Http的可以用公有服务器,也可以自己架
其实懂PHP应该就不难 服务器有整合好的 比如WAMP
目测单纯记录数据  几十行代码就搞定了

数据展示出来,我技术差了点。。。不太会玩,估计要用到某些控件或者是SWF?不然咋出曲线?
回复 支持 反对

使用道具 举报

发表于 2016-9-2 14:52:22 | 显示全部楼层
多谢楼主分享,学习了!
回复 支持 反对

使用道具 举报

发表于 2016-9-3 23:27:15 | 显示全部楼层
学习了,正需要,非常好!!!!
回复 支持 反对

使用道具 举报

发表于 2016-9-4 10:33:55 | 显示全部楼层
这个很不错啊,帖子期待更新
回复 支持 反对

使用道具 举报

发表于 2016-9-5 13:29:37 | 显示全部楼层
写得很好,可以试试看
回复 支持 反对

使用道具 举报

发表于 2016-9-27 10:54:41 | 显示全部楼层
标记一下,回头学习
回复 支持 反对

使用道具 举报

发表于 2017-1-6 11:50:49 | 显示全部楼层
这个不错,期待更新
回复 支持 反对

使用道具 举报

发表于 2017-2-8 09:36:04 | 显示全部楼层
楼主有后续吗
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-6-26 22:14 , Processed in 0.055868 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表