嵌入式 Web 应用程序设计 linux

Web-application design on embedded linux

我在一家照明自动化公司工作,我们将设计和开发一款产品,该产品将实施 Yocto/Buildroot 嵌入式 linux 操作系统。 我们将在产品内部使用 Linux SoM,SoM 的规格为 ~:

在这一点上,Linux 方必须实现一个基于 Web 的应用程序,该应用程序可以监控灯具并控制它们等。一般来说,项目打算使用网络来控制 building/home 的照明-app 运行 在设备上。前端应在页面上显示每个灯具,相关按钮和图标可帮助客户控制和监控灯具。前端可能有几个不同的页面。总的来说,最多可以有 250 个灯具和每个灯具 10 字节的数据。

我将在旁边有一个 MCU 运行,它可以执行实时操作并使用 UART 连接到 Linux SoM。实时 MCU 与灯具通信,并通过 UART 将它们的数据发送到 Linux,反之亦然。我猜网络应用程序应该启动一个网络服务器,以便客户端可以从 his/her PC/Smartphone 浏览器连接到该应用程序。我还认为我需要一个数据库,因为设备应该在重启或断电时保留数据。

此时我不确定我应该做什么样的设计。我不想创建复杂的应用程序。我不想做过度工程。我们目前有 2 名嵌入式人员和 2 名软件人员将很快加入我们。我是一个嵌入式 C/C++ 的人,虽然我知道 Vui.js、React.js 等的一般意义上的东西是如何工作的。我不太确定他们在嵌入式上的表现如何linux 资源受限,例如 RAM。

我脑子里有 3 种不同的设计:

第 1 ->

  1. 直接使用高电平通过串口接收数据 网络应用程序后端内的语言(Node.js、Flask 或 ??? 如果可能)
  2. Web 应用程序后端(Node.js、Flask 等或 ???)要么写入 接收到的数据到数据库(SQLite ??)或直接在一个 正确的方法
  3. 前端通过 REST API 与后端通信 (Vue.js, React 或 ???)

第二 ->

  1. 使用纯 C 可执行文件(循环缓冲区等)通过 UART 接收数据
  2. Web 应用程序后端(Node.js、Flask 或 ???)通过本地套接字从 C文件并进行数据库操作等
  3. 前端通过 REST API(Vue.js、React 或 ???)与后端通信

3rd -> 如果烧瓶,vue.js 等使 Linux 应用程序复杂化

  1. 使用纯 C 可执行文件(循环缓冲区等)通过 UART 接收数据
  2. 使用 lighttpd 或类似工具启动网络服务器并使用 fast-cgi ?

据我从网上了解到,以我将使用的SoM的规格,Node.jsVue.js等技术都可以轻松搞定,应该没有问题。如果是这样,即使这是一个非常笼统的问题,如何以简单和现代的方式做到这一点?

我认为最好的方法是第一种。 通过这种方式,您可以使用模块构建所有系统,因此将来更改某些内容会更容易。 您将使用的所有框架都由大公司维护,因此可以使用更长时间