硬件启用应用程序的软件设置
Posted
技术标签:
【中文标题】硬件启用应用程序的软件设置【英文标题】:Software setup for hardware enabled application 【发布时间】:2014-08-25 05:47:38 【问题描述】:我有一个与我想要控制的设备紧密耦合的 Raspberry PI。
我想要的设置如下所示:
-
在设备上具有交互式硬件控件(扬声器、麦克风、按钮)的物理设备
与设备耦合的 Raspberry PI
关于 PI:
-
一个对硬件变化做出反应的守护程序应用
显示设备当前状态并允许配置设备的 Web 界面
系统应该能够在新软件可用时以某种方式自我更新(apg-get 或其他一些机制)。
对于 Web 界面,我将使用 rails 应用程序,这本身不是问题。我不清楚的是通过 gpio 与硬件对话的事件驱动软件。首先,我更喜欢使用 ruby 来做这件事,这样我在开发解决方案时不会有很大的技术差距。
-
如何确保树莓派启动时两个应用程序都在后台启动和运行
如何将事件通知 web 应用(例如按下按钮)。
我想知道这两个软件有一个共享数据库来通信是否有意义。
如何最好地为这两个软件设置一些自动更新机制,而无需用户采取任何行动。
【问题讨论】:
为你写一些想法的答案:) @RichPeck 期待您的意见。我知道这个问题相当广泛,但它确实有助于我找到一些方向。 【参考方案1】:应用程序
这取决于操作系统
如果你安装一个轻量级的 Linux 版本,你也许可以创建一些运行时应用程序之类的东西。我从来没有做过这样的事情;但我知道在 Windows 中你可以创建 startup
程序——同样,你在 Linux 中是 should be able to do something similar
顺便说一句,您不会“运行” Rails 应用程序 - 您将启动服务器以捕获任何请求。您基本上会在“生产”模式下在本地运行您的应用程序 - 允许您通过 localhost 发送请求,或者在您的盒子的 HOSTS
文件中设置一个伪域
--
网络应用
网络应用程序本身是 RESTful,意思是(我相信),它只会在收到请求时才会采取行动。因为这适用于 HTTP 协议,所以它本质上意味着您需要某种(网络)服务来向网络应用发送请求:
具象状态转移 (REST) 是一种创建、读取、 使用简单的 HTTP 调用更新或删除服务器上的信息
虽然我自己从未这样做过,但我会使用您 PI 上的 ruby
应用程序向您的 Rails
应用程序发送 HTTP 请求。这肯定会增加一定程度的复杂性,但会确保您为两种类型的数据传输提供接口
您的区别是Rails
/任何其他网络应用程序只会根据请求执行。只要操作系统在运行,“本机”应用程序就会运行;这意味着您可以“收听”来自硬件等的更新。
我要做的是拆分功能:
硬件输入 > 发送到服务 服务 > 发送到 Rails Rails > 向服务发送响应 服务 > 处理响应
这可能看起来效率低下,但我认为这是从硬件捕获基于本地的输入的最佳方式。您必须使用 localhost rails 应用程序,使用 nginx
或其他一些高效的服务器运行
--
数据库
只有在他们共享数据时才有意义。您应该记住database
与datatable
不同。 数据库 存储许多表,通常用于单一目的;而数据表存储单一类型的数据。
根据您所写的,我建议使用在同一数据库服务器上运行的 两个 数据库。这将使您能够为这些数据库创建任意数量的表 - 让您可以为每个数据库添加任意数量的不同数据。可以使用 API 或 Web 服务共享数据
--
更新
Rails 应用不需要“更新” - 您只需部署一个新版本。以互联网为中心的软件之美 :)
就您的 Rasberry-PI“板载”软件更新而言 - 我对此没有太多经验,因此只能推荐
【讨论】:
以上是关于硬件启用应用程序的软件设置的主要内容,如果未能解决你的问题,请参考以下文章