タグ別アーカイブ: RaspberryPi

Analytics APIとRaspberry Piでサイトのアクセス状況を可視化するテスト

タグ: , | 投稿日: 投稿者:

こんにちは、ニタです。

最近私のMacBookProでは、GoogleAnalyticsのリアルタイムのアクティブユーザー数を常に表示させ、Webサイトのアクセス状況をすぐ確認できるようにしています。

このアクセス状況を、モニタ上だけではなく他の方法で可視化できないか現在検討しています。
そこで今回は、手頃なRaspberry Piを使ってテストモデルを作ってみました。

※記事内のRaspberry PiはRaspbianをインストール済みの「Raspberry Pi 2 Model B」を使用しています。

LチキじゃないですLチカです

Lチキは某コンビニのチキンです。ファ◯マの方が私は好きです。
今回初めてRaspberry Piを触るので、手始めとして電子工作系の「Hello World」、Lチカをやってみます。
「Lチカ」とは、「LEDをチカチカ点灯させる」ことの略称です。「Raspberry Pi Lチカ」とか「Arduino Lチカ」で検索すると、世界中の方々のLEDをチカチカさせた記事が出てきますのでそちらを参考に組み込みます。

img_nita_lchika010
img_nita_lchika011

PHPでGPIOを操作する

今回はPHPからGPIO(汎用入出力)の操作、AnalyticsAPIの利用を行うので、Raspbianにphpをインストールします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5

PHPによるGPIOの操作には、php-gpioを使用します。
composerからのインストールが推奨されているので、素直にそうします。

wget http://getcomposer.org/composer.phar
php composer.phar create-project --stability='dev' ronanguilloux/php-gpio l-chika

l-chikaというディレクトリにphp-gpioのパッケージがインストールされたので、GPIO操作のコードを書きます。

cd l-chika
vim test.php 


<?php 
require 'vendor/autoload.php';

use PhpGpio\Gpio;

// GPIOの5番を使用
$pin = 5;
$gpio = new GPIO();
$gpio->setup($pin, "out");

// GPIO5番に繋いだLEDを10回点灯させる
for($i = 0; $i < 10; $i++){
    $gpio->output($pin, 1);
    sleep(2);

    $gpio->output($pin, 0);
    sleep(1);
}
$gpio->unexportAll();

こちらをsudo php test.phpと言った感じで実行すると、LEDが点滅します。
GPIOのピン番号を指定し、$gpio->output()で制御する感じですね。

img_nita_lchika012

Analytics APIの設定

さて、続いてはAnalyticsのアクティブユーザー数を取得するコードを書いていきます。
アクティブユーザー数を取得するためには、Google Analytics APIを使用します。

プロジェクトの作成

Google Developers Consoleにて、プロジェクトを作成します。

img_nita_lchika001
img_nita_lchika002

作成したプロジェクトで利用できるAPIに「Analytics API」を追加します。

「APIと認証」→「API」と進み、Analytics APIを選択し、有効にします。

img_nita_lchika003
img_nita_lchika004

API有効化後、「APIと認証」→「認証情報」に移動しクライアントIDから認証情報を作成します。
この認証情報を使用してAPIを利用できるようになります。

img_nita_lchika005

クライアントIDを作成すると、次のウィンドウが表示されるので、「サービスアカウント」を選択します。

img_nita_lchika006

認証情報画面が表示されると、.jsonファイルがダウンロードされますが、今回は使用しません。
今回は*.P12ファイルをしようするので、.P12ファイルをダウンロードします。
また、認証情報画面の「クライアントID」「メールアドレス」は今後使用するので、控えておいてください。

img_nita_lchika007

Google Analyticsにユーザーを追加

アクティブユーザー数を確認したいサイトのGoogle Analyticsの設定画面で、APIがAnalyticsビューを利用できるよう、権限を与えます。

img_nita_lchika008

また、AnalyticsのビューIDを控えておきます。

img_nita_lchika009

Google API Clientのライブラリをインストール

PHPからAPIを利用するよう、クライアントライブラリをインストールします。
ComposerかGitHubからインストールできます。
今回はComposerからインストールします。

参考:API Client Library for PHP

php-gpioで作成したcomposer.jsonにAPI Clientのパッケージを追記します。

# composer.jsonに以下を追記。

"require": {
  "google/apiclient": "1.0.*@beta"
}

# 追記後、composerを更新
php composer.phar install
php composer.phar update

AnalyticsAPIからのリクエスト結果をLチカへ

Google Client APIのパッケージがインストールされたので、アクティブユーザー数を取得し、ユーザー数分Lチカさせるプログラムを作成します。

<?php
set_include_path("./vendor/google/apiclient/src/" . PATH_SEPARATOR . get_include_path());
 
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';
require 'vendor/autoload.php';

use PhpGpio\Gpio;
    
// サービスアカウント名(メールアドレス)
$service_account_name = 'YOUR_MAIL_ADDRESS@developer.gserviceaccount.com';
// P12キーファイルのパス
$key_file_location = './YOUR_KEY_FILE.p12';
// アナリティクスのビューID
$analytics_view_id = 'ga:1234567';
 
session_start();
 
if ( !strlen($service_account_name)
    || !strlen($key_file_location)) {
  echo missingServiceAccountDetailsWarning();
}
 
$client = new Google_Client();
 
if (isset($_SESSION['service_token'])) {
  $client->setAccessToken($_SESSION['service_token']);
}
 
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/analytics'),
    $key
);
$client->setAssertionCredentials($cred);
 
if($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
 
$_SESSION['service_token'] = $client->getAccessToken();
 
// アナリティクスクライアントを生成
$analytics = new Google_Service_Analytics($client);
 
try {
    // リアルタイムデータを取得する
    $results = $analytics->data_realtime->get(
            $analytics_view_id,
            'rt:activeUsers'
    );
 
    // 取得結果からリアルタイムアクティブユーザ数を取り出す
    $totals = $results->getTotalsForAllResults();
    $res = $totals["rt:activeUsers"];
    
    if($res == 0){
    echo "no active user.".PHP_EOL;
        exit;
    }
    
    
    // アクティブユーザー数分Lチカする。    
    $pin = 5;
    $gpio = new GPIO();
    $gpio->setup($pin, "out");
    
for($i = 0; $i < $res; $i++){
    $gpio->output($pin, 1);
    sleep(2);

    $gpio->output($pin, 0);
    sleep(1);
}
$gpio->unexportAll();
     
} catch (apiServiceException $e) {
    echo $e->getMessage();
}

このプログラムをcronで定期実行させると良いでしょう。
このAnalytics APIは、無料枠でのリクエスト上限が50,000リクエスト/日になっているので、1サイトのみであれば、5分間隔での実行でも十分かと思います。

今後の予定

今回はプロトタイプとしてLチカさせるだけになりましたが、
今後は、これを基に何かモノを動かしたりして、アクセス状況を分かりやすくしていきたいと思います。
それでは、また。


開封

Raspberry Pi 2 Model B OSインストールまで

タグ: | 投稿日: 投稿者:

こんにちは5月病にならなくてホっとしているモリです。

 

ラズベリーパイを手に入れる機会があったので紹介します。

 

私はラズベリーパイ自体知らなかったので、ちょうどいい!って感じでとりあえず開封してインストールしてみました。

開封

まぁ、最近流行っているので、何が出来るかはグーグル先生に聞くと面白そうな記事が山ほど出てくるので割愛!

私の環境はWindows環境なので今回紹介する内容はWindows向けです。

 

まずは、用意するもの。。。

1.ラズベリーパイ本体

2.MicroSDカード

  4GB以上を用意しましょう。

3.給電用USBケーブル

  本体側はMicroUSBの「micro-b」なので、スマフォを利用されているなら流用できます。

4.電源

  電源はスマフォ用USBアダプタや本体入力側がMicroUSBであればOKです。

  ちなみに給電は0.9Aで4.5W~5Wで動作させることが推奨されています。

  上限は5Vの電圧で1.5A~2Aとあるので、電源効率や周辺機器接続の損失を考慮して1.2A程度の供給で動かすのが無難な気がします。

5.OSイメージファイル

 OSのイメージファイルは公式サイトで提供されているので、こちらからダウンロードして下さい。

 OSはUBUNTUやRASPBIAN等、複数提供されています。

 お好みのOSを選んで下さい。

tmp1

 今回私が使用したのは「RASPBIAN」を使用しました。

6.MicroSDカードへのcopyツール

 ラズベリーパイはMicroSDカードにOSをインストールして動作させる為、SDカードにOSをインストールする必要があります。

 今回私が使用したのは「DD for Windows」を使用しました。

 ダウンロードはこちらから。。。

 他にもツールがあるので、こちらは好みで用意して下さい。

 

ここから『Raspbian』のインストール。。。

ZIPをダウンロードして解凍すると『yyyy-mm-dd-raspbian-wheezy.img』が展開されます。

展開されたイメージファイルをSDカードにインストールします。

「6.MicroSDカードへのcopyツール」で紹介したツールを起動しましょう。

注意)管理者権限で起動する事!

tmp2

 

こちらがツールの画面になります。

tmp3

1.copy先のディスクを選択する

 「ディスク選択」ボタンでディスクを選択します。

 SDカードが正常に認識している事を確認の上、選択をして下さい。

2.インストールするOSイメージファイルを選択する

 ダウンロードし展開した『yyyy-mm-dd-raspbian-wheezy.img』を選択して下さい。

3.ディスクに対してインストールする

 「<<書込<<」ボタンでインストールが開始します。

 この際に、「ディスクサイズ」や「書込み」の確認ダイアログが表示されますが「OK」で問題ありません。

 

これで、インストールは完了です。

お好みのカスタマイズを楽しんでください!でわでわ。。。