LoginSignup
3
0

アレクサからRaspberryPiに何かさせるためのテンプレート

Posted at

前置き

こんちには!
エンジニアのまるさんかくです。

今回はアレクサからRaspberryPiに指示をするための初期設定とテンプレートを記載します。
RaspberryPiをスマートホーム家電として動作させたり、RaspberryPiを中継ハブとして他のデバイスを動作させたりするための第一歩として当記事が参考になればと思います。

内容

アレクサに対し特定の音声で指示することで、RaspberryPi上のシェルスクリプトを動作できるようにする
※アレクサアプリから直接シェルスクリプトを実行させることも可能

用意するもの

  • アレクサ対応デバイス(スマートフォンでも可)
  • Raspberry Pi
  • ホストPC
  • スマートフォン

構成

アレクサ→NodeREDスキル→NodeRED Alexa Home Skill Bridge → RaspberryPi

用語説明

NodeREDとは

処理や分岐等を表すノードを線でつなぎ、ハードウェアやAPI、オンラインサービスを制御するためのツールです。

Node-REDはハードウェアデバイス、APIおよびオンラインサービスを新しく興味深い方法で接続するためのツールです。
Node-RED日本ユーザー会から引用

NodeRED Alexa Home Skill Bridgeとは

NodeREDとAlexa Home Skillを連携するためのNodeREDモジュールです。

このサイトは、node-red-contrib-alexa-home-skill Node-REDモジュールを使用するための登録ポイントです 。
このノードとサービスを使用すると、Amazon Echo のホーム スキル システムと連携する独自の「デバイス」を作成でき、Node-RED と接続できる基本的にすべてのものを音声制御できるようになります。
NodeRED Alexa Home Skill Bridge HPから引用

初期設定

Node-RED Alexa Home Skill Bridgeの登録・設定

この手順は Raspberry Pi/ホストPC/スマートフォンいずれかで実行

  • アカウント登録
    1. サイトにアクセス
      https://alexa-node-red.bm.hardill.me.uk/
    2. アカウント登録
      画面上部のRegisterをクリックし、アカウント登録
      Node-RED Alexa Hone Skill Bridge_paint.png
  • デバイスの設定
    1. Devicesを開く
    2. Add Deviceを選択
      Node-RED Alexa Hone Skill Bridge_Devices.png
    3. Name, Description, Actionsを記入しOK
      • Name
        デバイス名(記入必須)
      • Description
        デバイスの説明(記入必須)
      • Actions
        デバイスの動作内容
        今回は音声をシェルスクリプト実行のトリガにするだけのため、OnのみでOK
        詳しく知りたい方は下記参照
        https://alexa-node-red.bm.hardill.me.uk/docs
        Node-RED Alexa Hone Skill Bridge_AddNewDevices.png
        実行後、デバイスが表示される
        Node-RED Alexa Hone Skill Bridge_Test.png

Alexaスキルの追加

この手順はスマートフォン上で実行

  • アレクサアプリのインストール

  • アレクサにNode-REDスキルを追加する
    1. アプリを開き、スキル追加
    "スキル・ゲーム"を選択

    2. Node-REDスキルを追加
    Node-REDを検索し、Node-REDスキルを追加する

NodeRedの初期設定

この手順はRaspberryPi上で実行

  • NodeREDのインストール
    プリインストールされていれば不要

    $ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
    
  • NodeREDの起動
    方法1 or 方法2を実行

    方法1. 下記コマンドを実行

    $ node-red-pi --max-old-space-size=256
    

    方法2. アイコンをクリック
    RaspberryPi_Node-REDアイコン_paint.PNG

下記は必要に応じて実行

  • NodeREDの自動起動設定
    $ sudo systemctl enable nodered.service
    

NodeRED Alexa用プラグイン設定

この手順はホストPC上で実行

  • RaspberryPiのNodeREDにアクセス
    Webブラウザを開き、下記アクセス
    http://RaspberryPiのIPアドレス:1880/
    Node-RED_Webアクセス.png

  • NodeREDにAlexa用プラグイン追加
    右上のハンバーガーボタンをクリックし、"パレットの管理"をクリック
    Node-RED_パレット管理.png
    ユーザー設定のパレットからalexaと検索し、node-red-contrib-alexa-home-skillを追加
    Node-RED_alexa-home-skill追加.png
    追加すると左側のパレットにalexaのノードが追加される
    Node-RED_Alexaノード.png

プロジェクト作成

シェルスクリプト作成

この手順はRaspberryPi上で実行

  • 動作させるシェルスクリプトを作成
    例:テキストファイルを作成するシェルスクリプト
    make_text.sh
    touch sample.txt 
    

NodeREDのプロジェクト作成

この手順はホストPC上で実行

  • RaspberryPiのNodeREDにアクセス
    Webブラウザを開き、下記アクセス
    http://RaspberryPiのIPアドレス:1880/
    Node-RED_Webアクセス.png
    • 新規プロジェクト作成

    • ノードの配置
      各ノードをドラッグ&ドロップして、各端子を線で繋げる
      Node-RED_プロジェクト構成.png
      アレクサノードをダブルクリックして編集
      Accountの右側の鉛筆マークからアカウントログイン
      ログインするとNode-RED Alexa Home Skill Bridgeで登録したデバイスがDeviceから選択可能になる
      Node-RED_ノード編集.png
      execノードをダブルクリックして編集
      コマンドに作成したシェルスクリプトのフルパスを指定する
      Node-RED_execノード編集.png

Alexa 定型アクションの登録

  • アレクサのデバイス追加
    アレクサアプリを開き、デバイスを追加
    デバイスの+ボタンを押す

    "デバイスを追加"を選択

    "その他"を選択

    "デバイスを検出"ボタンを押す

    Wi-Fiのアイコンを選択

    指示に従い、デバイスをセットアップ

  • 定型アクションの設定
    "スキル・ゲーム"を選択

    右上の+ボタンを押す

    "アクションを追加"を選択

    "スマートホーム"を選択

    "すべてのデバイス"を選択

    登録したデバイス名が表示されているので、そのデバイスを選択

    実行条件を設定し、保存

実行

  1. 音声実行
    「アレクサ、<定型アクションで設定したフレーズ>」
    例: 「アレクサ、ファイル作って」

  2. アプリ実行

    • 定型スキルの再生ボタンから直接実行できる

実行後、sample.txtが作成される
※他にもスケジュール実行やアラームと連動して実行等もできます

最後に

今回はアレクサからRaspberryPiに音声で指示をするための初期設定とテンプレートを記載しました。
こちらを応用して自分だけのスマートホームデバイスを作成してみてはいかがでしょうか。

参考サイト

AlexaからRaspberry Piを経由して家電を音声で操作する
NodeRED RaspberryPiで実行する

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0