MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是151
tar xzvf mosquitto-151targz
第四步:编译
cd mosquitto-151/
make
make install
第五步:启动mosquitto
/mosquitto -v
1535473957: mosquitto version 151 starting
1535473957: Using default config
1535473957: Opening ipv4 listen socket on port 1883
1535473957: Opening ipv6 listen socket on port 1883
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquittoconf,
启动时候加上参数 -c,
/mosquitto -c mosquittoconf
可以看到,mosquitto监听的端口为1883
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 1921681105 on port 1883
1535474247: New client connected from 1921681105 as MQTT_FX_Client (c1, k60)
1535474247: No will message specified
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。可以,mqtt是物联网,是今后发展的重大趋势之一,比如现在的小米之家就可以通过小爱同学完成家庭内绝大多数工作,这些信息在这些数码设备是共通的,但前提是需要有网络,也就是互联网,没有网络是无法正常进行工作的。
使用Java语言;数据库:Mysql;经典技术组合(MQTT、Spring Boot、Shiro、MyBatis、Druid、Ehcache、Thymeleaf、Bootstrap、Swagger)开发,支持多数据源,支持代码一键生成。
功能模块:
设备管理、开关管理、计划管理、传感器管理、传感器数据展示、报警规则管理、设备日志、用户管理、角色管理、部门管理、岗位管理、菜单管理、字典管理、参数管理、通知公告、 *** 作日志、登录日志、在线用户、定时任务、代码生成、系统接口、服务监控、缓存监控、在线构建器、连接池监视等。
功能特点:
1、硬件使用 ESP8266,基于MQTT协议,自建物联网云平台。
2、支持云固件升级、设备远程重启。
3、支持音频播放、开关、普通灯、调色灯等各种用电设备控制。
4、单个模块可控制8路用电设备开关,可对模块信息、开关信息、计划任务、报警规则等维护管理。
5、云平台可对各类传感器管理,对传感器数据有多种展示方式。可设置阈值报警规则,符合报警规则的可执行自定义的动作。
6、模块具有一键配网功能,变更网络时无需重新烧写程序,方便快捷。
7、控制端可使用任意网络(2G/3G/4G/5G/WiFi/等)控制灯、热水器、电视、电机、窗帘、监控等各种用电设备,不受任何地区限制。
8、可云端存储模块各路开关状态,模块断电或重启后可自动同步云端模块各路开关状态,具有开关状态记录功能。
9、可记录设备所有 *** 作记录,模块、用户上下线记录等,并具有多种类型的数据统计展示。
10、控制设备命令下达后有状态反馈,可确保设备控制命令执行成功,且延时低。
11、具有心跳检测功能,模块掉线或模块重启后模块可自动重连MQTT服务,具有模块上下线提醒功能(平台消息提醒、邮件提醒)。
12、具有定时功能,可指定某一时刻执行、周期执行、延时执行、自定义Cron表达式执行等 *** 作。
13、可多模块接入云平台,可统一管理、控制模块各路设备开关。
14、云平台可对所有用户管理,每个用户可配置不同角色、不同权限,具有权限分配功能。
15、前端采用完全响应式布局,支持电脑、平板、手机等所有主流设备。
17、具有代码一键生成功能(包括控制器、模型、视图、菜单等),方便快速开发。
18、支持多数据源,简单配置即可实现切换。
19、支持菜单、按钮及数据权限分配,亦可自定义数据权限。
20、具有完善的XSS防范及脚本过滤,彻底杜绝XSS攻击。
21、Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。
22、支持服务监控、数据监控、缓存监控等功能。
为什么要介绍MQTT呢?MQTT又是什么呢?MQTT能做什么呢?下面,我就来简单的介绍一下MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
MQTT的特点:
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
2、对负载内容屏蔽的消息传输;
3、使用 TCP/IP 提供网络连接;
4、有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;
说简单一点,它就是一个即时通讯协议,在占用很少的资源情况下,可完成即时通讯。说以说esp8266采用mqtt通讯协议,是一个很不错的选择,使用esp8266+mqtt实现一个物联网的小实验,也是很容易的,其运行的效率也很高,具体的mqtt我在这里就不多说了,大家可以自行去度娘问问啦。物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,指令数据通过API调用下发至设备端,实现远程控制。
物联网平台也提供了其他增值能力,如设备管理、规则引擎、数据分析、边缘计算等,为各类IoT场景和行业开发者赋能。
如下是共享单车基于物联网平台的解决方案。
物联网平台提供边缘计算能力,支持在离设备最近的位置构建边缘计算节点处理设备数据。
在断网或弱网情况下,边缘计算可缓存设备数据,网络恢复后,自动将数据同步至云端。
提供多种业务逻辑的开发和运行框架,包括场景联动、函数计算和流式计算,各框架均支持云端开发、动态部署。
边缘计算能力允许在最靠近设备的地方构建边缘计算节点,过滤清洗设备数据,并将处理后的数据上传至云平台。
物联网应用可广泛应用于:智能生活、智能工业、智能楼宇、环境保护、农业水利、能源监控等环境。计算平台主要涉及:
开发者使用设备接入SDK,将非标设备转换成标准物模型,就近接入网关,从而实现设备的管理和控制。
设备连接到网关后,网关可以实现设备数据的采集、流转、存储、分析和上报设备数据至云端,同时网关提供规则引擎、函数计算引擎,方便场景编排和业务扩展。
设备数据上传云端后,可以结合云功能,如大数据、AI学习等,通过标准API接口,实现更多功能和应用。
物联网 (IoT) 设备必须连接互联网。通过连接到互联网,设备就能相互协作,以及与后端服务协同工作。互联网的基础网络协议是 TCP/IP。MQTT(Message Queue Telemetry Transport,消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的,已成为 IoT 通信的标准。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)