本文不包含公司机密技术和信息。
来新公司几个月了,发现有一个困扰的点是,货架上的机器对环境温度还比较敏感,然后机器本身散热也挺严重,导致货架上部分机器受到高温干扰无法正常运行。
因为我在秒测时主要就是做的测温这一块儿,所以提了个主意,想要在货架上部署温度传感器,然后通过物联网网关集成数据,我们就可以随时监测当前的机器处在什么温度下。领导雷厉风行,觉得对研发有一定的帮助,直接拍板了。
想法有了,就去找了一下,发现了有很多专用的物联网服务器,比如mosquitto之类的。再加上蓝牙网关,初步想法基本上就形成了。
最终的技术框架:货架上根据需求密度,部署好BLE温度传感器,该传感器与具体的位置一一绑定,然后不断的广播该区域的温度数据。然后根据场地地形以及实际测试,部署BLE网关设备,网关会定期扫描周边的BLE广播数据,集成后上传到后端的物联网服务器。该服务器本身也提供一个简单的http服务,用于展示数据和提供查询服务。
大概这么个结构(BLE + MQTT +HTTP):
这个网络的一个好处是,无论哪一环,各种设备,实现方式等,都可以灵活替换。
传感器毫无疑问使用BLE无线温度计,超低功耗且传输距离适合室内部署。这里我直接选了老东家秒秒测的产品,秒测的产品做的很棒,然后因为自己参与打造的,很信任也很熟悉~。秒测几乎所有的带温度测量功能的产品都有BLE,所以理论上选哪个都行。这里综合使用场景考虑,无线冷链标签以及米家蓝牙温湿度计2。
然后BLE网关,我自己找了一个比较好的功能很强大的网关,但是秒测同事帮推荐了四月兄弟的产品,简陋一些但是便宜很多,出于信任便选了后者。收到网关后发现,四月兄弟提供了一个测试用的mqtt服务器,这下好了,前期不用自己部署服务器了。
收到网关的时候,恰逢疫情居家办公,就自己在家里做测试,我手头还保留了一些当时发的家用温湿度计,还有几个研发用的冷链标签(属于离职未归还的公司财产,罪过…)。按照说明配置好网关后,直接就可以在工具中看到网关扫描到的广播数据了,很棒。
然后开始研究如何部署自己的服务器,毕竟四月兄弟的测试服务器不受控制。网络上有很多企业级的,腾讯和阿里云都有提供此类服务,比较有名的,EMQX,功能非常强大。还有一个是轻量级的mosquitto,可以部署在低功耗的单板计算机上。
我这里的话,是在一个专用网络环境中,并发量不会太大。考虑到我可能得自己准备机器部署,刚好手头有一个正在吃灰的树莓派,就选择了mosquitto。
这里可以直接安装eclipse-mosquitto,也可以自己下载源码编译,两个我都尝试过了,都比较easy。配置好端口号启动服务后,修改网关的上报地址和topic等信息,就可以在mosquitto的log中看到有源源不断的数据上来了。
接下来需要提供一个简单的http服务,用来展示数据以及提供查询接口。
由于传感器要和货架一一对应,这里要预先准备好对应关系。某个传感器,其放置在哪个位置,对应该位置的机器的ip段是多少,这样后续查询的时候就可以通过绑定关系知道某个ip对应的货架温度是多少。