yamamoWorks

.NET技術を中心に気まぐれに更新していきます

Google HomeとAzure IoT HubとRaspberry PiでTVとPS4をコントロール【07:Deploy編】

だいぶ間が空きましたが…今回はRaspberry Piへの配置です。

※全体像および各関連記事へのリンクはこちらから

環境変数の設定

前回までに作成したアプリではAzure IoT Hubへの接続文字列を環境変数IOTHUB_CONNECTION_STRINGから取得する作りにしているので、まずはRaspbianに環境変数を設定します。 なおPS4を制御するモジュール ps4-waker の動作には管理者権限が必要なので、環境変数はユーザレベルではなくサーバ共通で設定しておきます。幾つか方法はあるかと思いますが今回は/etc/profile.d/配下に*.shファイルを置く方法にします。

/etc/profile.d/smarthome.sh

export IOTHUB_CONNECTION_STRING="HostName=xxxxxxxx.azure-devices.net;DeviceId=raspi;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

foreverで永続化

Node.jsで作成したアプリの起動を永続化させる forever をインストールします。

$ sudo npm install -g forever

次に作成したアプリを適当なフォルダに配置しforeverを通じて起動させます。 前述の通りps4-wakerは管理者権限が必要なのでsudoで実行するのですが、環境変数を引き継ぐ-Eオプションが必要です。

$ sudo -E forever start ./SmartHomeHub/main.js

forever listコマンドで実行状態やログファイルのパスが表示されます。

$ sudo -E forever list

ようやく…

これでGoogle Homeに呼びかけてPS4のアプリ起動やスタンバイが出来るようになりました。 (こんなに長編になる予定ではなかった…) 残りはHDMI-CECを用いたテレビの制御です。