将Amazon Alexa连接到web_lirc,最佳做法是什么?

时间:2016-12-20 08:45:14

标签: node.js web-services security alexa-skills-kit lirc

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

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

  1. 在端口1234上运行的Raspberry pi上安装了nodejs服务器
  2. 安装web_lirc以便能够与LIRC建立nodejs api接口
  3. 使用我自己的简单" hack"基于HelloWorld nodejs模板创建了一个AWS-lambda技能。工作但不漂亮:)请参阅下面的代码片段:

    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!");
        }
    };
    
  4. 我看到的问题,但不确定如何解决:

    1. 从AWS控制我的Raspberry Web服务的最佳和最安全的方法。控制外部硬件的最佳选择是使用Web服务以及保护措施?
    2. 目前我需要在我的路由器中打开端口,所以基本上每个有权访问我的IP的人都可以使用JSON POST / GET命令控制我的覆盆子。什么是潜在的解决方案,是添加一个带密码保护的重叠Web界面?
    3. 是否可以让Alexa直接与我在LAN上的硬件对话,而无需通过AWS Lambda?
    4. 总的来说,我认为我要求让Alexa访问本地nodejs服务器的最佳实践(技术/安全性)。

      如果有任何事情必须详细阐述或详细解释,请告诉我。

      /托马斯

0 个答案:

没有答案