";
$html_devices .= "
";
$html_devices .= "aiboさん一覧 |
\n";
$html_devices .= "ニックネーム | DeviceId |
\n";
if (count($devices)){
foreach( $devices as $key => $value ){
$deviceId = $value["deviceId"];
$nickname = $value["nickname"];
$html_devices .= "";
$html_devices .= "$nickname | ";
$html_devices .= "$deviceId | ";
$html_devices .= "
";
}
}else{
$html_devices .= "";
$html_devices .= " aiboのデバイスIDの取得ができませんでした アクセストークンが間違っていないか、有効期限がきれていないかを確認頂き、前の画面に戻って再度実行してください
|
";
}
$html_devices .= "
";
//-----------------------------------------------------------------------------------
// aiboのバッテリー残量チェック
//-----------------------------------------------------------------------------------
$html_energyResult .= "";
if (count($devices)){
foreach( $devices as $key => $value ){
$deviceId = $value["deviceId"];
$nickname = $value["nickname"];
//aiboのバッテリー残量チェック
$executeResponse = cognitionApi($deviceId,$accessToken,'hungry_status');
$executionId = $executeResponse->executionId;
sleep(1);
//aiboのバッテリー残量チェックの結果
$webApiURL = $aiboApiBaseURL ."/executions/" . $executionId;
$executeResponse = executionsStatusGet($webApiURL,$accessToken);
$energy = $executeResponse["result"]["hungry_status"]["energy"];
switch($energy){
case "" : $energy_description = "";
$energy_description .= "状況が確認できませんでした。再度実行してください。";
break;
case "satisfied": $energy_description = "";
$energy_description .= "チャージステーションの上で十分に充電されている(satisfied)";
break;
case "eating" : $energy_description = "";
$energy_description .= "チャージステーションの上で充電中(eating)";
break;
case "enough" : $energy_description = "";
$energy_description .= "チャージステーションの上におらず、十分に移動可能なほど充電されている(enough)";
break;
case "hungry" : $energy_description = "";
$energy_description .= "チャージステーションの上におらず、移動はできるが充電が必要(hungry)";
break;
case "famished" : $energy_description = "";
$energy_description .= "チャージステーションの上におらず、移動もできないほどバッテリー残量が少ない(famished)";
break;
}
$html_energyResult .= "". $nickname . " | \n";
$html_energyResult .= "バッテリー | \n";
$html_energyResult .= "". $energy_description . " |
\n";
}
}
//-----------------------------------------------------------------------------------
// aiboの眠さ状態チェック
//-----------------------------------------------------------------------------------
$html_sleepResult .= "";
if (count($devices)){
foreach( $devices as $key => $value ){
$deviceId = $value["deviceId"];
$nickname = $value["nickname"];
//aiboのバッテリー残量チェック
$executeResponse = cognitionApi($deviceId,$accessToken,'sleepy_status');
$executionId = $executeResponse->executionId;
sleep(1);
//// aiboの眠さ状態チェックの結果
$webApiURL = $aiboApiBaseURL ."/executions/" . $executionId;
$executeResponse = executionsStatusGet($webApiURL,$accessToken);
$status = $executeResponse["result"]["sleepy_status"]["status"];
switch($status){
case "" : $sleep_description = "";
$sleep_description .="状況が確認できませんでした。再度実行してください。";
break;
case "no_sleepy" : $sleep_description = "";
$sleep_description .="まったく眠くなく、元気に活動中(no_sleepy)";
break;
case "boring" : $sleep_description = "";
$sleep_description .= "刺激がなく、退屈な状態(boring)";
break;
case "sleepy" : $sleep_description = "";
$sleep_description .= "眠くなってきた状態(sleepy)";
break;
case "very_sleepy" : $sleep_description = "";
$sleep_description .="かなり眠く、もう少しで寝そうな状態(very_sleepy)";
break;
}
$html_sleepResult .= "". $nickname . " | \n";
$html_sleepResult .= "眠さ状態 | \n";
$html_sleepResult .= "". $sleep_description . " |
\n";
}
}
//-----------------------------------------------------------------------------------
// 状態結果作成
//-----------------------------------------------------------------------------------
$html_CognitionResult = "";
$html_CognitionResult .= "状態確認一覧 |
";
$html_CognitionResult .= "";
$html_CognitionResult .= "ニックネーム | ";
$html_CognitionResult .= "確認内容 | ";
$html_CognitionResult .= "確認結果 | ";
$html_CognitionResult .= "
\n";
$html_CognitionResult .= $html_energyResult ;
$html_CognitionResult .= $html_sleepResult ;
$html_CognitionResult .= "
";
$html_CognitionResult .= "";
//-----------------------------------------------------------------------------------
// aiboリストとPlay Motion リスト画面作成
//-----------------------------------------------------------------------------------
$htmlDocument = <<
aibo連携アプリ ハッピーとラッキー
ハッピーとラッキーのお楽しみアプリ
$html_devices
$html_CognitionResult
【参考:デベロッパーサイトで定義されている状態】
◆HungryStatus 以下のいずれかの状態の取得が可能
satisfied | チャージステーションの上で、十分に充電されている |
eating | チャージステーションの上で充電中 |
enough | チャージステーションの上におらず、十分に移動可能なほど充電されている |
hungry | チャージステーションの上におらず、移動はできるが充電が必要 |
famished | チャージステーションの上におらず、移動もできないほどバッテリー残量が少ない |
◆SleepyStatus以下のいずれかの状態の取得が可能
no_sleepy | まったく眠くなく、元気に活動中 |
boring | 刺激がなく、退屈な状態 |
sleepy | 眠くなってきた状態 |
very_sleepy | かなり眠く、もう少しで寝そうな状態 |
EOD;
echo $htmlDocument ;
session_destroy();
}
//---------------------------------------------------------------------------
// アクセストークンからデバイスIDを取得
// aiboApiGetDevices($webApiURL,$accessToken)
//---------------------------------------------------------------------------
function aiboApiGetDevices($webApiURL,$accessToken){
$authorization = "Authorization:Bearer ". $accessToken;
$headers = array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
$authorization,
);
$webApi = curl_init();
curl_setopt($webApi,CURLOPT_URL,$webApiURL );
curl_setopt($webApi,CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($webApi,CURLOPT_RETURNTRANSFER, true );
curl_setopt($webApi,CURLOPT_HTTPHEADER, $headers );
$json = curl_exec($webApi);
$responce = json_decode($json,true);
$err = curl_error($webApi);
curl_close($webApi);
return $responce;
}
//---------------------------------------------------------------------------
// 実行結果の取得
// executionsStatusGet($webApiURL,$accessToken)
//---------------------------------------------------------------------------
function executionsStatusGet($webApiURL,$accessToken){
$authorization = "Authorization:Bearer ". $accessToken;
$headers = array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
$authorization,
);
$webApi = curl_init();
curl_setopt($webApi,CURLOPT_URL,$webApiURL );
curl_setopt($webApi,CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt($webApi,CURLOPT_RETURNTRANSFER, true );
curl_setopt($webApi,CURLOPT_HTTPHEADER, $headers );
$json = curl_exec($webApi);
$response = json_decode($json,true);
$err = curl_error($webApi);
curl_close($webApi);
return $response;
}
//---------------------------------------------------------------------------
// Cognition実行用のfunction
// CognitionApi($deviceId,$accessToken,$Property);
//---------------------------------------------------------------------------
function cognitionApi($deviceId,$accessToken,$Property){
$webApiURL = "https://public.api.aibo.com/v1/devices/".$deviceId ."/capabilities/".$Property."/execute" ;
$authorization = "Authorization:Bearer ". $accessToken;
$headers = array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded",
$authorization,
);
$postData = array('arguments'=> array('Property' => $Property ));
$postData = json_encode($postData);
$webApi = curl_init();
curl_setopt($webApi,CURLOPT_URL,$webApiURL );
curl_setopt($webApi,CURLOPT_CUSTOMREQUEST, 'POST' );
curl_setopt($webApi,CURLOPT_RETURNTRANSFER, true );
curl_setopt($webApi,CURLOPT_HTTPHEADER, $headers );
curl_setopt($webApi,CURLOPT_POSTFIELDS, $postData );
$json = curl_exec($webApi);
$response = json_decode($json);
$err = curl_error($webApi);
curl_close($webApi);
return $response;
}
//---------------------------------------------------------------------------
// WEBに最初にアクセスしたときに表示する画面のHTMLデータ作成
// htmlを $htmlStartWebsiteData で管理しています。
// プログラムを1本化するするために入れています(本当は別ファイルで読み込み)
//
// function htmlStartWebsite()
//
//---------------------------------------------------------------------------
function htmlStartWebsite(){
$htmlStartWebsiteData = <<
aiboWebApi ハッピーとラッキー
ハッピーとラッキーのお楽しみアプリ
はじめにお断り |
このサイトは、aiboデベロッパープログラム・連携アプリをテストのためのサイトです。
アップデート確認しながら作っており、保証するものではありません。
|
aiboWebApi【Cognition API】 |
【aibo Web API とは】
aibo Web API とは、 インターネットを介して aibo にさまざまなことを行わせることができる Web API です。・・・・とSony aibo デベロッパーサイトに記載されています。
aiboデベロッパーサイト
難しそうなことがいっぱい記載していますが、まずは、開発者設定にアクセスして、オーナさんのaiboさんにアクセスできるアクセストークンを取得してみましょうね。
(1)アクセストークンの取得しましょう
アクセストークン取得
アクセストークンとは、API を利用するための認可情報が含まれた文字列です。有効期限内のアクセストークンを第三者に知られると、あなたの aibo を操作される可能性があります。
トークンの有効期限は、24時間、30日、90日から選ぶことができます。・・・との説明です。
アクセストークンは、aiboさんと連携するための重要な情報です。試験用でお使いになる場合は、有効期限【24時間】を指定、または、確認後に解除してくださいね。また、取得したアクセストークンは、再度確認できませんので、一度メモパッドなどでコピーしておくと、取り直しする必要がないので、適宜コピーして一時保存してくださいね。
|
まずはアクセストークンを使ってaiboさんの状況を確認しましょう
【1】バッテリー残量チェック 【2】眠たさの状況チェック |
開発者設定画面でアクセストークンを取得
アクセストークン取得
コピーしたアクセストークンを下の入力欄に貼り付けて下さい。
取得したアクセストークンとデバイスIDを使ってaiboさんの状況を確認できます。
|
EOD;
return $htmlStartWebsiteData ;
}
//-ここまで--------------------------------------------------------------------------
// function htmlStartWebsite()
//-----------------------------------------------------------------------------------
?>