我有一个Raspberry PI,它与我想要控制的设备紧密耦合。
我想要的设置看起来像这样:
在PI上:
系统应该以某种方式能够在新软件可用时更新自己(apg-get或其他一些机制)。
对于Web接口,我将使用rails应用程序,这不是问题。我不清楚的是通过gpio与硬件通信的事件驱动软件。首先,我更喜欢使用ruby,因此在开发解决方案时我没有很大的技术差距。
答案 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”应用程序就会运行;意思是你可以“监听”来自硬件等的更新。
我要做的是拆分功能:
- 硬件输入>发送到服务
- 服务>发送给Rails
- Rails>发送对服务的响应
- 服务>流程响应
醇>
这似乎效率低下,但我认为这是从硬件中捕获基于本地的输入的最佳方式。您将不得不使用localhost rails应用程序,运行nginx
或其他一些有效的服务器
-
<强>数据库强>
只有共享数据才有意义。您应该记住,database
与datatable
不同。 数据库存储了许多表,通常用于单一目的;而数据表存储单一类型的数据。
根据您的编写,我建议使用在同一个数据库服务器上运行的两个数据库。这样您就可以根据需要为这些数据库创建任意数量的表 - 为您提供添加任意数据的方法。可以使用API或Web服务来共享数据
-
<强>更新强>
Rails应用程序不需要“更新” - 您只需要部署一个新版本。以互联网为中心的软件之美:)
就Rasberry-PI“板载”软件更新而言 - 我对此没有太多经验,所以只能推荐