繁体   English   中英

从 Spring 引导应用程序访问 Raspberry Pi 模块

[英]Access Raspberry Pi modules from Spring Boot application

是否可以从 Spring 引导应用程序(可能在该 RPi 上的 docker 容器上运行)访问 Raspberry Pi,例如使用 Pi4J 还是我需要创建一个与 Z2A2D5926ZF 引导应用程序通信的迭代应用程序?

对于上下文 - 我需要创建一个 web 应用程序,该应用程序将允许远程控制多个 DC 引擎。

我了解您想要做的是:

在 Pi 上运行 Web/Rest 应用程序,允许您控制 Pi 上的 GPIO、PWN、I2C 功能等内容。 这可以使用 pi4j。 您可以在https://pi4j.com/找到详细信息。

这个库将允许您控制诸如GPIOPWMServos 之类的东西。

请注意,我不确定在 docker 容器内运行这个基于 pi4j 的应用程序的复杂性,因为它需要访问将在 docker 环境中抽象出来的本机系统。

我建议构建一个本地运行的常规应用程序,然后将其移动到 docker 映像中。

注意:通过直流引擎,我假设您的意思是直流电机。

使用 Pi4J,您可以直接访问 GPIO 引脚, 例如此处 您可以在 docker 容器中构建 Pi4J,并将 Spring 引导应用程序放在同一容器中,并允许容器访问 GPIO 引脚

那将是后端实现。 对于面向客户端的实现,您可以在 Spring 引导应用程序中创建 REST API ,例如:

GET https://your.rpi.com/engine/{name}/

它返回引擎的 JSON 状态,例如

https://your.rpi.com/engine/airconditioning/

返回:

{“状态”:“运行”}

然后:

PUT https://your.rpi.com/engine/airconditioning/start
PUT https://your.rpi.com/engine/airconditioning/stop

虽然以上不是严格意义上的 REST。 它们是 RPC。

或 PUT 到控制端点:

PUT https://your.rpi.com/engine/airconditioning/

内容:

{
  "command": "start|stop"
}

PUT 将是更好的选择,因为 REST 中使用 POST 来创建新资源。 您将更改现有资源(即引擎)的状态。

实现端点的代码,例如

https://your.rpi.com/engine/{name}/

将是实施 Pi4J 集成的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM