SSブログ

alexaスキルから自宅サーバー経由でデバイスを動作させた時のメモ [QNAP]


Pythonの勉強を兼ねて、Alexaスキルから自宅サーバーを経由でデバイスを動作させるプログラムを作成した。

そのときの手順と参考にしたページのブックマーク。

    

    

1.操作したいデバイスのI/F仕様(API)を調査

   デバイスとスマフォのメーカー製アプリの通信をWireSharkでキャプチャして、

   I/F仕様を調査した。

   【構成】

    デバイス <= 無線 => AP <= 有線 => Hub(GS108Tv2)

                                                         ||

                                                         += ミラー元 => AP  <= 無線 => スマフォ

                                                         ||

                                                         += ミラー先(Probe) => PC(WireShark)

                                                   

    ※廃棄予定のAPがあったため、それを使用した。

      Hub(GS108Tv2)は、前に買ってあったもの(テレビ周辺で使用していたもの)を使用した。

    

    

2.デバイスを制御するプログラムをPCで作成

    調査した結果、HTTPで通信していたので、自作プログラムによる制御が可能と

  判断して、プログラムを作成した。

    プログラムは、Pythonで作成。(Pythonの勉強のため)

    

    

3.Debian10のVM作成

    debian.jpでインストールDVDをダウンロードして、インストールした。

    
    ▲参考

    ・nfsサーバーのインストール


    ・viで十字キーがきかなかった。


    ・WindowsでNFSサーバーをマウント


    
    

4.dginx + uWSGI + Djangoのインストール・初期設定

    各ソフトをインストールし、HTTPでアクセスすると文字列が出るところまで確認

    

    ▲参考







    

    

       ※今回の構成では使用しなかったけど、なんかのため



    
    

    ▲はまった箇所

    ・uwsgiのiniファイル

      wsgi-fileは、{プロジェクトのサイトディレクトリ}/wsgi.pyを指定

    
    
5.HTTPS化(証明書作成)

    最初は、おれおれ認証のつもりだったが、

    無料で作成できるところがあるのでそちらを使用した

      

    ▲参考




  

6. Django RESTful

     AlexaとDebian間のI/FをRESTfulで行うため、当該ソフトをインストールした。

     その後、(lambdaがpost/getした際に呼ばれる)モジュールを作成

       

     ▲参考




  

  

     ▲はまった箇所

     ・csrfがらみ(「AttributeError: 'class name' object has no attribute 'COOKIES'」)



  

7.Alexa Home Skill (lambda)

    AWSのlambda、Alexa Skills Kit管理コンソールでのスキル作成を行った。

  

    ▲参考






    <レイヤー関連>



    ▲注意点等

    ・requestsをアップロードを行う場合、Lambdaのコーディングを行う前に行った方が

      よいかも

   (アップロード時にLambdaのソースファイルが削除されるかもレイヤーに登録すれば大丈夫 )

    ・alexaアプリでのテスト時のログは、awsの「CloudWatch」-「ログ」

        -「ロググループ」で確認できる

    ・Alexa Skills Kit(amazon.com)のアカウントを作成した場合、作成後、

      一度ログインし直して、個人情報を入力してから使用開始したほうがいいかも。

    ・Alexaのスキルは、一度インストールしたら削除出来ない仕様ぽい

    ・状態を教えてもらう機能(【デバイス名】の【コントローラ名】の状態を

   教えて?等)は、対応していないものもあるっぽい。

       APIマニュアルに記載されていても出来ないぽい。

      (ModeControllerの状態レポートに記載されている発話でいっても、

       「その操作に対応していません」と返ってくる。

        ダイソンの扇風機も対応していないぽいので、あきらめた)

    ・TemperatureSensorは、Alexaアプリ内で設定画面が表示されなくなるので

   使用するのをやめた。他の案を考えよう。

  

一通り作成後、β版(限定公開)の期限が三か月であるに気が付いた。

三か月後に限定公開を一度終了して、再度、限定公開すればいいのかな?

自分のアカウントは、そのまま使用し続けられるのかな?

違う方法を考えよう。。。


nice!(0)  コメント(0) 


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。