1

我已经成功创建了演示项目,我可以在其中使用 Amazon Echo Alexa 控制红外发射器。

继续我的项目,我不确定与性能和最重要的安全性相关的最佳实践是什么。我将在下面解释项目并详细说明问题:

  1. 在端口 1234 上运行的树莓派上安装 nodejs 服务器
  2. 安装了 web_lirc 以便能够拥有到 LIRC 的 nodejs api 接口
  3. 基于 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!");
        }
    };
    

我看到的问题,但不确定如何解决:

  1. 从 AWS 控制我的 Raspberry Web 服务的最佳和最安全的方法。控制外部硬件的最佳选择是什么,是使用网络服务吗?保护呢?
  2. 目前我需要在我的路由器中打开端口,所以基本上每个可以访问我的 IP 的人都可以使用 JSON POST/GET 命令来控制我的树莓派。什么可能是一个潜在的解决方案,即添加一个带有密码保护的覆盖 Web 界面?
  3. 是否可以让 Alexa 在 LAN 上直接与我的硬件对话,而无需通过 AWS Lambda?

总的来说,我认为我要求让 Alexa 访问本地 nodejs 服务器的最佳实践(技术/安全)。

请让我知道是否有任何需要详细说明或解释的内容。

/托马斯

4

0 回答 0