欢迎来到我们关于公司在生产中使用Elixir的系列案例研究。请看我们迄今为止发布的所有案例。
FarmBot是一个开源的精准农业数控耕作项目,包括一个机器人耕作机器、软件和包括耕作数据库在内的文档。FarmBot的机器使用物联网技术,使农民能够轻松地远程管理他们的花园。
Farmbot是用Nerves构建的,Nerves是一个开源平台和基础设施,可以快速和大规模地构建、部署和安全地管理你的物联网设备舰队。
当Farmbot的前嵌入式系统工程师Connor Rigby最初加入公司时,他的第一个项目是使用Ruby建立一个Farmbot应用程序。在完成概念验证后,他知道他需要一种方法来使嵌入式开发过程更加高效、可靠和安全。Connor以前在一家公司使用过Nerves,并且是Nerves的定期开源贡献者,所以他知道这个平台会帮助他实现这些目标。
Nerves如何帮助
Connor把Nerves带到了Farmbot,把他创建的整个概念验证的Ruby应用程序移植到Nerves上,这是他在一个月的空闲时间里完成的,总共花了大约20小时。他还继续为Nerves做出开源贡献,帮助构建网络功能,该功能现在是NervesHub的一部分,是实现空中固件更新管理的可扩展网络服务。
使用Nerves的最大好处肯定是你可以快速启动和运行。
- 康纳-里格比,嵌入式系统工程师
康纳说,Nerves平台和最终成为NervesHub的东西是Farmbot的最佳选择,因为。
1.Nerves支持精简系统,在低带宽地区运行良好
由于Nerves将整个应用程序捆绑在相对较小的档案中,就完整的Linux系统的固件镜像而言,Farmbot可以使用NervesHub更快地发送空中更新,用户可以更快地下载。作为比较,一个安卓系统的更新一般在4GB左右,但一个Nerves的更新可以打包成12MB。
这对于在较偏远地区工作的Farmbot用户来说特别有帮助,因为这些地区的带宽较低,对Wi-Fi的访问也不够可靠。当互联网连接可用时,NervesHub将连接并检查是否有更新,然后提示用户安装该更新。
2.Nerves以低开销增加便利性
对于已经连接到互联网的设备,连接到Nerves不需要额外的配置,因为NervesHub与当前用于设备到云通信的公钥基础设施兼容。由于Farmbot在引进Nerves时已经有了连接互联网的设备,他们能够使用与云服务相同的 "密钥 "来登录NervesHub。
3.Nerves拥有Elixir和Erlang的所有好处
因为它是用Elixir编写的,并在Erlang运行时系统内构建,Nerves保留了该语言和框架的品质--特别是它们是分布式的、容错的、软实时的和高度可用的。Connor还说,有了Nerves,你用Nerves构建的东西很容易推理,因为你只把你需要的东西输入Nerves应用程序,帮助你避免不必要的复杂性或不可预见的安全漏洞。你可以在设备运行时检查它们,并在不影响用户体验的情况下对它们进行调试。
成果
FarmBot现在有大约300台设备在NervesHub中运行,他们的每个设备型号都有不同的部署。Nerves的建立是为了扩大规模,所以随着FarmBot继续扩大其用户群和扩展其产品功能,他们将能够继续使用Nerves开发和发布可靠的固件更新。
本案例研究首次发表于Nerves网站。