硬件启用应用程序的软件设置

时间:2014-07-04 00:01:44

标签: ruby-on-rails raspberry-pi hardware daemon gpio

我有一个Raspberry PI,它与我想要控制的设备紧密耦合。

我想要的设置看起来像这样:

  1. 设备上具有交互式硬件控制的物理设备(扬声器,麦克风,按钮)
  2. 与设备耦合的Raspberry PI
  3. 在PI上:

    1. 对硬件更改做出反应的守护程序应用程序
    2. Web界面,显示设备的当前状态并允许配置设备
  4. 系统应该以某种方式能够在新软件可用时更新自己(apg-get或其他一些机制)。

  5. 对于Web接口,我将使用rails应用程序,这不是问题。我不清楚的是通过gpio与硬件通信的事件驱动软件。首先,我更喜欢使用ruby,因此在开发解决方案时我没有很大的技术差距。

    1. 如何在Rasberry PI启动时确保两个应用启动并在后台运行
    2. 如何通知webapp事件(例如按下按钮)。
    3. 我想知道这两个软件是否有共享数据库进行通信是否有意义。
    4. 如何最好地为两个软件设置一些自动更新机制,而无需用户采取任何行动。

1 个答案:

答案 0 :(得分:2)

应用

这取决于操作系统

如果您安装轻量级的Linux,您可能可以创建一些运行时应用程序或其他东西。我从未做过这样的事;但我知道从Windows可以创建startup程序 - 同样,你在Linux中should be able to do something similar

顺便说一句,你不会“运行”Rails应用程序 - 你将启动服务器以捕获任何请求。您基本上在“生产”模式下本地运行您的应用程序 - 允许您通过 localhost 发送请求,或者在您的框的HOSTS文件中设置伪域

-

网络应用

网络应用本身就是 RESTful ,这意味着(我相信),它只会在发送请求时动作。因为这适用于HTTP协议,它实质上意味着您需要某种(Web)服务来向Web应用程序发送请求:

  

Representational state transfer(REST)是一种创建,阅读,   使用简单的HTTP调用更新或删除服务器上的信息

虽然我自己从未这样做,但我会使用PI上的ruby应用向您的Rails应用发送HTTP请求。这肯定会增加一定程度的复杂性,但会确保您接口有两种类型的数据传输

您所拥有的差异是Rails /任何其他网络应用只会根据要求行事。只要操作系统运行,“Native”应用程序就会运行;意思是你可以“监听”来自硬件等的更新。

我要做的是拆分功能:

  
      
  1. 硬件输入>发送到服务
  2.   
  3. 服务>发送给Rails
  4.   
  5. Rails>发送对服务的响应
  6.   
  7. 服务>流程响应
  8.   

这似乎效率低下,但我认为这是从硬件中捕获基于本地的输入的最佳方式。您将不得不使用localhost rails应用程序,运行nginx或其他一些有效的服务器

-

<强>数据库

只有共享数据才有意义。您应该记住,databasedatatable不同。 数据库存储了许多表,通常用于单一目的;而数据表存储单一类型的数据

根据您的编写,我建议使用在同一个数据库服务器上运行的两个数据库。这样您就可以根据需要为这些数据库创建任意数量的 - 为您提供添加任意数据的方法。可以使用API​​或Web服务来共享数据

-

<强>更新

Rails应用程序不需要“更新” - 您只需要部署一个新版本。以互联网为中心的软件之美:)

就Rasberry-PI“板载”软件更新而言 - 我对此没有太多经验,所以只能推荐