コンテンツへスキップ

Google Home音声コマンドで、パソコンを起動する

Use Case(ユースケース)

Google音声コマンド経由でPCの起動を行います。

前提条件

  • (Raspberry Piの)PHPが動作するWEBサーバがセットアップされている
  • (Raspberry Piの)WEBサーバの公開設定が終わっている
  • (Raspberry Piの)WEBサーバより「etherwake」が利用可能
  • IFTTTサービスの利用登録が実施済みである
  • IFTTTサービスにおいて、Webhooksが利用可能である IFTTT(イフト)でWebhooksの利用
  • 起動対象のPCをWOL経由で起動出来るように設定されている必要があります

全体の流れ

  1. IFTTTのGoogle AssistantよりPC起動時の音声コマンドをトリガートリガー登録
  2. IFTTTのWebhooksでPC起動時の音声コマンド受領時のアクションを実行(Raspberry PiのWEB APIへ発信)
  3. WEB APIよりPC起動(etherwake)

トリガー

トリガー(this)にGoogle Assistantを選択し「Say a simple phrase」のトリガーを選択します。

音声コマンドを登録します。
「パソコンを起動して」
「パソコンの電源を入れて」などを登録します。

コマンド受付時のGoogle Homeからのレスポンスも登録します。
「パソコンを起動します」

Lanuguage(言語)は、Japanese(日本語)を選択します。

アクション

IFTTTのWebhooksよりRaspberry PiのWEB APIへPUSH通知

IFTTT(イフト)でWebhooksの利用

  • URL:準備したAPIのURLを指定します。外部からWEBアクセス可能なURLを指定する必要があります。また、APIトークンを送信するので、https:// での指定を強くオススメします。
  • Method:今回は、POST受信に対応したPHPを用いるので、POSTを指定します。
  • Content Type:application/x-www-form-urlencoded: キーと値は、その間に '=' がある形でキーと値の組になり、 '&' で区切られてエンコードされます。キーや値の英数字以外の文字は、パーセントエンコーディングされます。
  • Body:準備したPHPの仕様に合わせて、3つのパラメータを設定します。
    • APIKEY=apikey
    • KEY=WakeupPC
APIKEY=apikey&KEY=WakeupPC

以下が、準備したサンプルのPHPスクリプトとなります。

//@HOME_API_LOG_NAME@ ログファイル名、書き込み権限が必要です
//@HOME_API_KEY@ POST受信時の簡易的なAPI-KEYのトークン確認を行います
//@WINDOWS_MAC@ WindowsのMACアドレス

//各種設定
//ログのファイル名
define("HOME_API_LOG_NAME","@HOME_API_LOG_NAME@");
//home-api-key
define("HOME_API_KEY","@HOME_API_KEY@");
//Windows PC
define("WINDOWS_MAC","@WINDOWS_MAC@");

function WakeupPC($MAC) {
	logger("Start powerOn","INFO");
	$cmd = 'sudo /usr/sbin/etherwake '.$MAC;
	$output =  shell_exec($cmd);
}

function logger($text, $level) {
	$datetime = date('Y-m-d H:i:s');
	$date = date('Ym');
	$file_name = __DIR__ . "/log/log-home-{$date}.log";
	$text = "{$datetime} [{$level}] {$text}" . PHP_EOL;
	echo $text;
	if(!(file_exists($file_name))){
		touch($file_name);
		chmod($file_name, 0777);
	}
	return error_log(print_r($text, TRUE), 3, $file_name);
}

logger("Start API KEY=".$_POST['KEY'],"INFO");

if(isset($_POST['KEY']) && strcmp($_POST['APIKEY'], HOME_API_KEY) == 0) {
	switch ($_POST['KEY']) {
	case 'WakeupPC':
			logger("Start wakeupPC","INFO");
			WakeupPC(WINDOWS_MAC);
			break;
	default:
		logger("This is private API. (in Default)","ERROR");
	}
}else{
	logger("This is private API. (in else)","ERROR");
}

アクション

準備したPHPファイルより「WINDOWS_MAC」に設定したMACアドレスへ「etherwake」コマンドを用いてPC起動を行います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA