在 React.js 中通过网站控制 raspberry pi?

Control raspberry pi via website in React.js?

我已经编写了一个 nodejs 应用程序并将其放在我的 raspberry pi 上。这一切都很好。但是,我现在想通过 React 内置的 Web 浏览器界面/网站来控制我的 nodejs 应用程序。我该怎么做?该网站将在互联网上,但需要以某种方式访问​​我的 raspberry pi 计算机并在那里修改内容。

我认为有两种方法可以做到这一点:

  • 也可以将您的raspberry pi用作网络服务器:例如安装Nginx/Apache(它们是网络服务器)并为它们提供您的 React 应用程序。
  • 使用外部托管,例如 OVH,并将您的 React 应用也提供给他们。

我不知道你是否知道如何做一个 React 网站,但是网上有很多教程,比如 this one

这里的目标是在您的 NodeJS 应用程序和您的网站之间创建 API 关系。 NodeJS 服务器必须监听一个端口(例如 8080)和对应于命令的特定 URL(例如 /api/reboot 将重启应用程序)。在您的网站中,您只需在按下按钮后调用这些 URL(例如,'Reboot' 按钮会将 POST 请求发送到 http://raspberrypi:8080/api/reboot)。

基本上,link 你想用你的 NodeJS 应用程序执行的每个命令到一个 url 并且 link 它在你的网站上到一个动作。

如果你想保护传输安全(这样就没有人可以重启你的应用程序),只需包含一些密码和 HTTPS :)

再见!

这里是link:

还建议添加模块子进程以使用这样的执行命令:

var exec = require('child_process').exec;

execute('sudo reboot'); use this when receiving socket  


function execute(command) {
    var cmd = exec(command, function(error, stdout, stderr){
        console.log("error: ", error);
    });
}

有了这个,您可以使客户端具有 "terminal"(文本容器),并且在单击按钮时,客户端将使用您在文本容器中的命令将信息发送到 RPI。