作者: @iGuo
我的高中同学最近因为疫情在家,和几个同学合伙开了一批自习室。他们找到我说想要做自习室的无人化管理,分析了需求以后,发现主要是需要做物联网程序,于是动手设计了一些方案,顺便分享给可能需要做loT应用的朋友们拓展思路。
注意:本方案是个设计稿,没有经过实践检验,不确定在生产环境是否可靠,请慎用。
这个项目的主要需求其实并不复杂,只是需要让用户可以在小程序上控制预约后的自习室座位的灯和柜子等的开关。这里的关键是需要通过一个网络应用来转发用户对智能硬件的控制请求。
物联网应用的主要几个难点及对应的思路如下:
- 通信数据量小、通信环境不确定。传统的HTTP/HTTPS协议相对比较复杂,传递这么小的数据量显然性价比过低,而且无法应对网络不稳定的状况。所以在loT应用中,通常使用MQTT协议代替HTTP协议来实现控制程序和智能硬件的通信。本文的目的不是介绍MQTT协议如何实践应用,所以不再赘述。
- 安全问题。这里初步计划是使用MQTT推荐的一些安全方案,加上阿里云的微消息队列MQTT自带的一些鉴权方案,如果资金充足考虑使用VPN来保证鉴权和加密的安全。
- 硬软件测试。软件层面相对解决方案比较成熟,有很多可以用的方案,这里先把软件方案设计展示出来。硬件层面则潜在的问题比较多,树莓派、输出接口、智能锁都有很多不确定的环节,只有拿到实物以后才有可能逐步覆盖测试。
MQTT协议架构
MQTT协议架构要求三个部分:发布者(Publish)、代理(Broker)、订阅者(Subscribe)。 其中,发布者负责发布消息&