AlexaとNode-REDを利用したスマートホームスキル作成時の注意
最近、AlexaとNode-REDを連携してスマートホームスキルを作っている。 前回のApple TVを操作するスクリプトもその一環だったのだが、うまく動かなかったのでその対処法を書く。
AlexaとNode-REDの連携
Amazon Echoとラズパイで、音声で照明をon/offするという記事を参考にした。
丁寧に書いてあって、補足する必要が全く無いので、連携についてはこちらの記事を読むといい。
execにpyatvを設定
こんな感じで、「Alexa, テレビつけて」でmenuボタンを押すようにしたんだけど、うまく動かない。
よく見ると、atvremote
コマンドが見つからないというエラーが出ていた。
systemdで起動しているサービスは、ユーザーの環境変数を読み込まないらしい。 systemdについては前にも書いたが、絶対パスで書かないといけないとか、いろいろ作法があって面倒くさい。
systemdの設定変更
pyenv
を使って導入したソフトをsystemdで使う場合の注意点はpyenv
の公式に記載があったのでこれを参考にした。
まず以下のコマンドでNode-REDのサービスファイルの場所を調べる。
sudo systemctl status nodered
たぶん /lib/systemd/system/nodered.service
にある。
これを書き換える。
Environment="PI_NODE_OPTIONS=--max_old_space_size=256"
Environment="PATH=/home/user_name/.pyenv/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PI_NODE_OPTIONS
という環境変数を設定しているところの下に、PATH
の設定を追加する。
デフォルトでは、/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
がPATH
に設定されているようなので、
そこに追加する形。
ちなみに環境変数の展開もできないので、こんな書き方はNG。ホントに面倒くさい。
Environment="PATH=/home/user_name/.pyenv/shims:$PATH"