首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程物联网设备的自动部署概念

远程物联网设备的自动部署概念
EN

Software Engineering用户
提问于 2021-06-24 13:34:40
回答 2查看 83关注 0票数 -2

我正在从事一个相对较大的项目,其中可能包括+1000物联网设备,在这种情况下,可能是一个Raspberry Pi。到目前为止,我只试验了20-30个设备,但概念应该是一样的。

目前,很多关于设备上的自动软件更新/部署的想法,当它在现场时(没有访问它,但有互联网连接)。

--我有以下概念:

  • 设备通过websocket连接到服务器,以及唯一的id (mac地址)。
  • 最后,在websocket服务器上,我看到了所有连接的设备,我可以将它们按“标记”分组,比如“生产”或“分期”,或者类似的东西。(由数据库支持)
  • 默认情况下,在设备上有一个软件部件,通过websocket服务器检查设备上应该运行哪些其他“模块”(脚本)。(通过websocket命令,每次启动或按需检查一次)。
  • 因此,该设备最终通过websocket获得了一个信号,表明新的部署是可用的。在本例中,部署实际上包括存储库url (类似于github)和"post安装命令“,类似于安装部署后设备应该做的事情(比如运行"npm安装”)。
  • 因此,设备确保它复制存储库并准备就绪,以便运行。(在这里考虑使用simple-git )。
  • 一旦部署在设备上可用,就可以通过websocket命令自动或按需启动/停止部署(考虑在这里使用pm2 )。

“模块”(设备将下载并运行)很可能是其他的NodeJS脚本、简单的bash脚本或者仅仅是终端命令(一次运行)。

如果已经安装的模块更新了怎么办?我试图排除这一点,因为我认为这又使事情复杂化了。如果服务器说有一个新的部署,设备基本上再次下载它(它不需要知道它已经在那里),然后删除所有其他不需要的模块。这也给了我一种安全网,如果一个错误的版本的模块被推送。只需使用固定版本创建一个新部署即可。

如果设备上的基本软件(处理部署安装)需要更新怎么办?不应该需要更新。目前,这个概念是不可能的。

问题

我在这里的问题是:我是疯了还是疯了,只想着在生产环境中考虑这个问题?我是不是走在一条不太难看的赛道上?我总是有这个关键字(“码头”)浮动在我的头上,但我认为这将是太OP的情况下,将过于复杂的事情。另外,除了防弹错误之外,你能想到一些可能会导致这条道路上的麻烦的事情吗?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2021-06-24 18:16:12

通过重新发明轮子,你使事情变得比需要的更复杂。

一个Rhaspberry Pi配备了一个非常有能力的包管理器(apt),它也可以进行自动(无人值守)更新。

您需要做的是为Debian包创建一个存储库(本质上是一组具有特定结构的HTTP可访问的文件和文件夹),并在那里托管您的版本。

然后,剩下的唯一障碍是将apt配置为使用包存储库,编写一个小脚本,定期要求apt检查更新并安装它们,并将包最初安装在每个设备上。这些都是在调试新设备时需要执行一次的操作。

票数 4
EN

Software Engineering用户

发布于 2023-01-20 14:19:28

我不同意Bart van Ingen Schenau的观点。我不认为你在重新发明方向盘。

你考虑过乌尔蒂博吗?

这是一种完全不同的Raspberry Pis编程方法,您正在编写自己的内核--您自己的系统+应用层(拜,拜Linux)。取决于您的IoT设备将做什么,您的整个映像可能只有1MB。拥有一切。

开始阅读这里,永远不要回到现实世界。这就是我爱上Ultibo的地方,我深深的爱着它,我已经把所有的Linux,Python,apt等东西都从我的脑海中删除了。

您还可以在这里找到更多详细信息:覆盆子Pi与Ultibo的研制

至于你的问题,一个自动内核/代码更新,Ultibo有很多选择给你。互联网(HTTP,FTP,SSH,Telnet),直接串行电缆连接到名称在开始。

现在的问题是,如果您的项目允许考虑使用您自己的内核进行开发,而忘记了所有与Linux相关的内容。这种方法有利有弊。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/429676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档