最近做了一些物联网项目,最核心的部分大概是硬件与服务端软件的通信模型了。
其中有基于http通信的,有基于websocket的,有基于tcp自定义协议的,也有基于mqtt的。
最简单的是基于http通信的,这种只能硬件端发起请求,然后服务端响应请求,无法实现服务端主动发送请求。我们智能柜项目就是这种通信模型,主要是柜子上报信息,或者请求服务端数据。
基于websocket的通信其实本质上是基于http通信的,不过服务端可以主动发送消息。开发打印机功能时,打印机端与服务端是通过websocket通信的,服务端主动向打印机发送打印请求。
不过上述两种通信对于硬件通信都不是很友好,所以比较推荐另外的两种通信模式。
如果单纯是客户端上报消息给服务端可以选择tcp自定义协议通信,可以使用netty来开发。我们的另一套智能柜项目就是这么做的,他主要是柜子上报各种信息。
如果是服务端与硬件端交互比较多的话,可以选择mqtt协议,使用mqtt中间件来管理连接问题。我们的智能安全帽项目就是通过这种通信方式来达到复杂的通信需求的。