【问题标题】:Control raspberry pi via website in React.js?通过 React.js 中的网站控制树莓派?
【发布时间】:2016-12-21 20:46:00
【问题描述】:
我已经编写了一个 nodejs 应用程序并将它放在我的树莓派上。这都很好。但是,我现在想通过 React 中内置的 Web 浏览器界面/网站来控制我的 nodejs 应用程序。我该怎么做?该网站将在互联网上,但需要以某种方式访问我的树莓派计算机并在那里修改内容。
【问题讨论】:
标签:
node.js
reactjs
raspberry-pi
raspbian
【解决方案1】:
我认为有两种方法:
- 也将您的 raspberry pi 用作 Web 服务器:例如安装 Nginx/Apache(它们是 Web 服务器)并将您的 React 应用程序提供给他们。
- 使用外部托管,例如 OVH,并将您的 React 应用程序也提供给他们。
我不知道你是否知道如何做一个 React 网站,但是网上有很多教程,比如 this one。
这里的目标是在您的 NodeJS 应用程序和您的网站之间创建 API 关系。 NodeJS 服务器必须监听端口(例如 8080)和对应于命令的特定 URL(例如 /api/reboot 将重新启动应用程序)。在您的网站中,您只需在按下按钮后调用这些 URL(例如,“重启”按钮将向 http://raspberrypi:8080/api/reboot 发送 POST 请求)。
基本上,将您想通过 NodeJS 应用程序执行的每个命令链接到一个 url,然后在您的网站中将其链接到一个操作。
如果您想确保传输安全(这样没人可以重新启动您的应用程序),只需包含一些密码和 HTTPS :)
再见!
【解决方案2】:
这里是链接:MyExample
还建议添加模块子进程以使用如下执行命令:
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);
});
}
有了这个,你可以用“终端”(文本持有者)制作客户端,点击按钮,客户端会在文本持有者中使用你的命令向 RPI 发送信息。