我已经成功创建了演示项目,我可以在其中使用 Amazon Echo Alexa 控制红外发射器。
继续我的项目,我不确定与性能和最重要的安全性相关的最佳实践是什么。我将在下面解释项目并详细说明问题:
- 在端口 1234 上运行的树莓派上安装 nodejs 服务器
- 安装了 web_lirc 以便能够拥有到 LIRC 的 nodejs api 接口
基于 HelloWorld nodejs 模板创建了一个 AWS-lambda 技能,我自己的简单“hack”工作但不漂亮:) 请参见下面的代码片段:
var http = require('http'); var host = '12.34.56.78'; // (no http/https !) var port = 3000; var cmd = ''; function performMacroRequest(endpoint, data) { cmd = '/macros/' + endpoint; //console.log('cmd: ' + cmd); var options = { host : host, port : port, path : cmd, // the rest of the url with parameters if needed method : 'POST' }; http.request(options, function(res) { console.log('performMacroRequest - STATUS: ' + res.statusCode); res.on('data', function (chunk) { console.log(cmd + ': '+ chunk); }); }).end(); } // var APP_ID = "protected by me"; // Amazon Alexa hardware ID HelloWorld.prototype.intentHandlers = { // register custom intent handlers "HelloWorldIntent": function (intent, session, response) { response.tellWithCard("Hello World!", "Hello World", "Hello World!"); }, "IRIntent": function (intent, session, response) { performMacroRequest('TESTTV',''); }, "AMAZON.HelpIntent": function (intent, session, response) { response.ask("You can say hello or cake to me!", "You can say hello or cake to me!"); } };
我看到的问题,但不确定如何解决:
- 从 AWS 控制我的 Raspberry Web 服务的最佳和最安全的方法。控制外部硬件的最佳选择是什么,是使用网络服务吗?保护呢?
- 目前我需要在我的路由器中打开端口,所以基本上每个可以访问我的 IP 的人都可以使用 JSON POST/GET 命令来控制我的树莓派。什么可能是一个潜在的解决方案,即添加一个带有密码保护的覆盖 Web 界面?
- 是否可以让 Alexa 在 LAN 上直接与我的硬件对话,而无需通过 AWS Lambda?
总的来说,我认为我要求让 Alexa 访问本地 nodejs 服务器的最佳实践(技术/安全)。
请让我知道是否有任何需要详细说明或解释的内容。
/托马斯