Amazon Echo Alexa を使用して赤外線送信機を制御できるデモ プロジェクトの作成に成功しました。
私のプロジェクトを進めていくと、パフォーマンスと最も重要なセキュリティに関してベスト プラクティスがどうなるかわかりません。以下のプロジェクトについて説明し、問題について詳しく説明します。
- ポート1234で実行されているRaspberry piにnodejsサーバーをインストールしました
- LIRC への nodejs api インターフェイスを持つことができるように web_lirc をインストールしました
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!"); } };
私が見ている問題ですが、対処方法がわかりません:
- AWS から Raspberry Web サービスを制御するための最良かつ最も安全な方法。外部ハードウェアを制御するための最良のオプションは何ですか?それは Web サービスを使用しており、保護はどうですか?
- 現在、ルーターでポートを開く必要があるため、基本的に、IP にアクセスできるすべての人が、JSON POST/GET コマンドを使用してラズベリーを制御できます。パスワード保護を備えたオーバーレイ Web インターフェイスを追加することは、潜在的な解決策となるでしょうか?
- AWS Lambda を介さずに、Alexa が LAN 上のハードウェアと直接通信することは可能ですか?
全体として、Alexaがローカルnodejsサーバーにアクセスできるようにするためのベストプラクティス(技術的/セキュリティ)を求めていると思います。
さらに詳しく説明する必要がある場合はお知らせください。
/トーマス