智能硬件与服务端的交互

现在物联网发展迅速的今天,物联网已经渗透到我们的生活的方方面面,智能快递柜,智能手表,智能空调等等,都已经是物联网发展的证明!不仅这样,还有人开始倒腾起来智能马桶,确实也是个好想法,智能马桶可以分析我们各方面的身体状况,通过里边的智能分析功能,同时通过网络发送到云端,进行分析,产生报表,发到你的手机,产生一个闭环!当然,你上过几次厕所也是知道的!题外话!

这么多的智能物件是怎么交互的呢!智能物件首先一个功能是自动联网的功能,家庭联网一般通过家中的wifi进行联网,室外的智能柜,智能汽车的联网都是通过移动网络联网(3g,4g,以后的5g)!联网之后,设备就可以与你服务端进行交互啦,同时,智能端都是有系统的,即使最简单的单片机,定制的硬件系统,甚至还有有android,或者linux系统做智能硬件的系统,这些系统都可以提供程序的开发环境,只是用到的语言和网络协议可能不太一样,但一般脱离不了,udp,tcp,http等,当然还有一些自定义传输协议!如果我们只是监控心跳类的可以用udp就可以,有的我们需要可靠的实时传输,我们可以用tcp,如果一段时间后需要传输可以用http,不是实时链接,省电和流量!根据不同的场景选择不同的传输协议!

选择了协议后,后边就需要和服务端进行交互,传递相应的数据传输!以智能柜交互做个简单的示例,智能柜涉及到开箱,柜子状态,柜体屏幕广告等,开箱的话,可以多种协议应用都可以,首先以http的方式说下,http协议的方式可以用微信登录的方式进行开发!微信登录,就是在客户端起了一个轮询的http请求,每秒都去服务端验证是否操作完成,当然这个轮询是在打开微信二维码的时候开始的,并且有轮询次数限制!这样防止自己对自己ddos!根据这个原理,有屏幕的柜子就可以点击生成二维码,同时启用轮询请求服务端,服务端返回结果,进行开锁!开箱成功!

如果是长链的方式交互,那就需要维护一条智能柜和服务端的长链,可以用udp和tcp,通过心跳保证智能柜的在线,服务端发送开锁指令,可以直接发给远端的智能柜,如果开锁比较频繁,可以使用队列,异步开锁!异步获取开锁结果,这样是稍微麻烦点的!

实际上我是推荐http的方式的,可以交互和扩展性最好,开锁稳定也是最好,tcp的方式好处是可以被动开锁,可以控制远程发送开锁指令开锁,http一般是主动开锁,只能智能柜发起指令才能进行开锁!这点不如tcp的方式灵活!所以最终的结论,http和tcp结合使用开锁,可以最大程度的保证开锁!

柜子状态和屏幕广告这个可以通过http的方式,定时发送到服务端的方式来实现!只要建立了链接,什么事情都是非常简单啦!只要能维护自己的服务的常驻,后边的任何交互和开发都是非常简单的