基于微服务和mini2440的WebSocket B/S视频监控及MQTT物联网应用系统

该系统利用WebSocket进行浏览器与微服务间图像数据传输,MQTT处理嵌入式设备与微服务的普通数据交互。基于Spring Cloud构建微服务,包括Eureka、Zuul、Sleuth+Zipkin等,嵌入式Linux应用涉及字符设备驱动、I2C驱动。Mini2440通过Socket上传摄像头数据,MQTT发布温度信息。源代码可在提供的链接获取。
摘要由CSDN通过智能技术生成


18届985小硕,入职刚满一年,本科研究生都是嵌入式方向,跟着研究生导师做过好几个嵌入式项目,写过驱动画过四层单板,也在一些公司实习过,个人对嵌入式比较感兴趣。入职后被随机分岗,搞了一年JAVA微服务开发,目前想从事嵌入式方向,考虑到自己入职后没有搞嵌入式,在简历上不占任何优势。鉴于此,从上周六开始到今天共6天,每天下班回来熬夜做完了这个“基于微服务和mini2440的WebSocket B/S视频监控及MQTT物联网应用系统”,以便回忆以前的嵌入式知识和总结现阶段所学知识。希望能获取面试的机会吧!

一、系统基本组成架构

系统基本组成架构图
浏览器和微服务之间,图像数据采用WebSocket传输,普通数据采用AngularJs传输。
微服务和嵌入式设备之间,图像数据采用Socket传输,普通数据采用MQTT传输。

浏览器和后台建立WebSocket连接,接收并显示后台的监控图像。Mini2440将Camera数据压缩成jpg,并通过Socket上传到服务器,Website微服务将数据通过Websocket发送给浏览器显示。

Mini2440采集到的温度信息通过MQTT发布,MQTT微服务订阅来接收数据,这就是整体的组成框架了,限于时间和能力,系统比较简陋,其实视频传输更好的做法的是基于RTSP等流媒体协议进行视频传输。

二、Spring Cloud微服务

微服务简介

Spring Cloud微服务基于Spring Boot框架,具有约定大于配置的特点,组件丰富,功能齐全,Spring提供https://start.spring.io/ 来辅助搭建微服务,可以通过Gradle和Maven进行项目管理,微服务搭建起来非常方便。

系统的微服务组成框架

基于Maven作为项目管理工具,共搭建了五个微服务,分别是Eureka服务发现、Zuul网关、Sleuth+Zipkin日志跟踪、User微服务、MQTT微服务和WebSite微服务,微服务以Jar包的形式运行,其实更好的做法是发布镜像,基于k8s和docker进行部署,主要关注WebSite微服务和MQTT微服务,MQTT微服务通过mosquitto代理服务器,来订阅嵌入式设备发布的数据。图片数据基于WebSocket进行传输,普通的数据基于AngularJS传输,实现MVC视图控制分离,前台基于BootStrap进行界面样式配置和布局。

Spring Cloud集成WebSocket

1、pom.xml中添加依赖

		<!--websocket-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

2、添加注解@ServerEndpoint("/websocket")、@OnOpen、@OnMessage、@OnError和@OnClose等,代码有点长,只贴部分代码说明,后面会附源代码
在这里插入图片描述
如果Socket连接有多个网卡,可以通过如下方式指定:
server = new ServerSocket(port,5,InetAddress.getByName (“192.168.1.1”));

img控件通过data显示图片:
document.getElementById(“pic”).src = ‘data:image/jpg;base64,’+msg.data;

Spring Cloud集成MQTT

MQTT是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。消息中间件有非常多种,比如activem、 rabbitmq、mosquitto等,我选用mosquitto作为消息中间件。
mosquitto是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,C语言开发,提供轻量级的,支持可发布/可订阅的的消息推送模式。

mosquitto服务器的搭建可以参考: https://blog.csdn.net/pjlxm/article/details/79967322
技巧:可以通过Chrome插件MqttLens进行调试,调试教程参考:https://blog.csdn.net/u013022210/article/details/79626682
Spring Cloud集成MQTT参考: https://segmentfault.com/a/1190000017811919?utm_source=tag-newest
参考的MQTT集成教程里,仅提供了mqtt发布的方法,我这里写一下MqttClient订阅的方法:
新建一个MsgRead类,通过调用该类的connect方法即可同mqt

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值