OpenMediaVault 3 beta で EpgrecUNA を実行

## <i class="fa fa-cube" style="font-size:1em;"></i> 前提
前回掲載した記事を参考に、OpenMediaVault 3 beta で Nginx と PHP を実行できるようにしておいてください。

- [OpenMediaVault 3 beta で PHP を実行](http://qiita.com/chobisuke/items/8089f22852357adc9144)

Webコンテンツを置いている共有フォルダに録画用のtsファイルを置きますので、それなりの容量を確保しておいてください。
基本、SSHでログインしての作業になります。
右のSSHメニューから、SSHサーバの設定を有効にしておいてください。
また、録画には正確な時間が必要となりますので、日付＆時刻メニューからNTPを有効にしておいてください。

以下の機器も必要となります。

- PT3
- カードリーダ（SCR3310-NTTComを使用しています）

## <i class="fa fa-cube" style="font-size:1em;"></i> 参考
ほぼ手順のみ記載しますので、詳しいことは下記サイトを参考にしてください。

- [ubuntu+epgrec(UNA版)+pt3環境構築](http://eco.senritu.net/ubuntu_epgrec_una_pt2_pt3/)

## <i class="fa fa-cube" style="font-size:1em;"></i> EpgrecUNAの取得について
[適当な何かの別館](http://d.hatena.ne.jp/katauna/)から、必要なファイルをダウンロードしておいてください。
ダウンロード用のパスワードとかは、サイト内に記載してありますので探してください。
（ここで質問されても答えれません）

- epgrecUNA_151114.tar.gz
- epgrecUNA151114Fix1.tar.gz
- epgrecUNA151114Fix2.tar.gz
- epgdumpUNA160127.tar.gz
- pt1-c8688d7d6382.tar.bz2
- recpt1-http-rev4.tar.gz

## <i class="fa fa-cube" style="font-size:1em;"></i> MySQL Pluginのインストール
プラグインメニューの「セッション：Network」の「openmediavault-mysql 3.x.x」のチェックボックスにチェックを入れて、上段にあるインストールボタンでインストールしてください。

右のMySQLメニューを選択し、「General settings」の有効化にチェックを入れてください。

これで、OMV3でMySQLが使用できるようになりました。

## <i class="fa fa-cube" style="font-size:1em;"></i> 必要なツールのインストール
ここから先は、SSHでの作業となります。
（基本的に、OMVではrootで作業しますので`su`や`sudo`を使用していません）

`apt-get install`コマンドを使用して、EpgrecUNAで使用するツールをインストールしてしまいます。
（一つのコマンドが長くなっています。漏れなくコマンドを登録してください）

~~~bash
apt-get -y install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools git git-core  build-essential autoconf automake unzip pkg-config curl dkms libboost-all-dev libssl-dev libtool linux-headers-`uname -r` yasm at
~~~

www-dateユーザで`at`コマンドを実行できるように細工します。

~~~bash
sed -i 's/www-data//g' /etc/at.deny
~~~

カードリーダにB-CASカードを刺して以下のコマンドを実行してください。

~~~bash
pcsc_scan | grep "Japanese Chijou Digital"
~~~

すると、以下のような表示が出力されますので<kbd><kbd>Ctrl</kbd>+<kbd>C</kbd></kbd>で止めてください。

~~~
	Japanese Chijou Digital B-CAS Card (pay TV)
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> PT3ドライバのインストール
以下のコマンドを順に実行し、PT3ドライバをインストールしてください。

~~~bash
cd /tmp
git clone https://github.com/m-tsudo/pt3.git
cd pt3/
make
make install
${SHELL} ./dkms.install
~~~

インストール後、OMVをリブートさせてください。

~~~bash
reboot
~~~

ドライバの確認

~~~bash
ls -la /dev/pt*video*
~~~

正常にインストールできていれば以下のような感じで出力されます。

~~~
crw-rw-rw- 1 root video 250, 0 11月  6 20:21 /dev/pt3video0
crw-rw-rw- 1 root video 250, 1 11月  6 20:21 /dev/pt3video1
crw-rw-rw- 1 root video 250, 2 11月  6 20:21 /dev/pt3video2
crw-rw-rw- 1 root video 250, 3 11月  6 20:21 /dev/pt3video3
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> epgdumpのインストール
`scp`等で「epgdumpUNA160127.tar.gz」を`/tmp`にコピーしてください。
以下のコマンドを順次実行し、`epgdump`をインストールします。

~~~bash
cd /tmp
tar -xvf epgdumpUNA160127.tar.gz
cd epgdump
make
make install
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> recpt1のインストール
以下のコマンドを順に実行し、`arib25`ライブラリと`recpt1`をインストールします。

#### arib25ライブラリのインストール
~~~bash
cd /tmp
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make clean
make
make install
~~~

#### recpt1のインストール
`scp`等で「pt1-c8688d7d6382.tar.bz2」と「recpt1-http-rev4.tar.gz」を`/tmp`にコピーしてください。
その後、以下のコマンドを順次実行します。

~~~bash
cd /tmp
tar xvjf pt1-c8688d7d6382.tar.bz2
tar xvzf recpt1-http-rev4.tar.gz
patch -p2 -d pt1-c8688d7d6382/recpt1/ < recpt1-http-rev4/recpt1-http.diff
cd pt1-c8688d7d6382/recpt1/
sed -i".org" 's/pt1video/pt3video/g' pt1_dev.h
./autogen.sh
./configure --enable-b25
make
make install
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> インストール後の確認
以下のコマンドを実行し、手動で録画と番組表の取得をしてみます。

~~~bash
cd /tmp
recpt1 -version
recpt1 --b25 --strip 27 20 test.ts
epgdump  27 test.ts test.xml -xml
head -n 20 test.xml
~~~

こんな感じで、番組表がXML形式で出力されます。
（内容は気にしないでください。XMLファイルが出力されていることだけ確認してください）

~~~
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">

<tv generator-info-name="tsEPG2xml" generator-info-url="http://localhost/">
  <channel id="27_47144">
    <display-name lang="ja_JP">テレビ新広島１</display-name>
    <id ts="32021" on="32021" sv="47144" st="1"/>
  </channel>
  <channel id="27_47145">
    <display-name lang="ja_JP">テレビ新広島２</display-name>
    <id ts="32021" on="32021" sv="47145" st="1"/>
  </channel>
  <programme_pf start="2016-11-06 21:00:00" stop="2016-11-06 21:54:00" channel="27_47144" eid="53490">
    <title>キャリア〜掟破りの警察署長〜＃５[字][デ]</title>
    <desc>金志郎（玉木宏）は、１日警察署長に人気ドラマの主演俳優・小松平健介（新納慎也）を迎える。しかし、小松平が命を狙われていることが、判明し署内は大混乱に！</desc>
    <genres>4:0:0:16:0:16</genres>
    <video_audio>179:3:0</video_audio>
    <status>0</status>
    <sch_pnt>0</sch_pnt>
  </programme_pf>
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> fstabの修正
Webコンテンツを置くHDDのマウント設定を変更する必要があります。
`vi /etc/fstab`等で編集してください。

~~~:/etc/fstab:
# >>> [openmediavault]
UUID=49f6479a-ef38-479a-9605-586213b80145 /media/49f6479a-ef38-479a-9605-586213b80145 ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# <<< [openmediavault]
~~~
:warning: "49f6479a-ef38-479a-9605-586213b80145"の部分は環境によって違います。
`noexec`を`exec`に変更してください。
この設定をしないと、番組表の取得ができませんのでお忘れなく。

## <i class="fa fa-cube" style="font-size:1em;"></i> MySQLの設定
以下のコマンドを実行し、MySQLのクライアントツールでローカルのMySQLに接続します。

~~~bash
mysql -uroot -p
~~~

次に、以下のコマンドを実行し、epgrecデータベースを作成します。

~~~
create database epgrec;
grant all on epgrec.* to epgrec@"%" identified by 'epgrec' with grant option;
flush privileges;
quit
~~~
:warning: 今回は"epgrec"データベースの"epgrec"ユーザで、パスワードは"epgrec"で作成しています。

## <i class="fa fa-cube" style="font-size:1em;"></i> EpgrecUNAのインストール
Nginxメニューのサーバタブに一覧で表示されているルートのパスをメモしておいてください。

`scp`等で「epgrecUNA_151114.tar.gz」と「epgrecUNA151114Fix1.tar.gz」と「epgrecUNA151114Fix2.tar.gz」を`/tmp`にコピーしてください。
その後、以下のコマンドを順次実行します。

~~~bash
cd /tmp
tar -zxvf epgrecUNA_151114.tar.gz
tar -zxvf epgrecUNA151114Fix1.tar.gz
tar -zxvf epgrecUNA151114Fix2.tar.gz
mv epgrec [メモしたパス]/
cd /var/www/html/
ln -s [メモしたパス]/epgrec epgrec
chown -R www-data:www-data [メモしたパス]/epgrec
chown -R www-data:www-data /var/www/html/epgrec
cd /var/www/html/epgrec
cp -p do-record.sh.sample do-record.sh
chmod 777 cache templates_c video thumbs settings
chmod 666 thumbs/index.html video/index.html
chmod 755 do-record.sh
chown www-data:www-data do-record.sh
~~~

## <i class="fa fa-cube" style="font-size:1em;"></i> EpgrecUNAの設定
`vi`コマンドで`/var/www/html/epgrec/config.php`を編集します。
（別のテキストエディタでも問題ありません）
おそらく、デフォルトでは地上波チェンネルの情報が以下のようになっているはずです。

~~~:/var/www/html/epgrec/config.php:
$GR_CHANNEL_MAP = array(
        'GR27' => '27',         // NHK
        'GR26' => '26',         // 教育
        'GR25' => '25',         // 日テレ
        'GR22' => '22',         // 東京
        'GR21' => '21',         // フジ
        'GR24' => '24',         // テレ朝
        'GR23' => '23',         // テレ東
//      'GR16' => '16',         // MX TV(スカイツリー)
//      'GR20' => '20',         // MX TV(東京タワー)
//      'GR18' => '18',         // テレ神
        'GR30' => '30',         // 千葉
//      'GR32' => '32',         // テレ玉
        'GR28' => '28',         // 大学
);
~~~

コレを各地域ごとの情報に書き換えてください。
マスプロのサイトに有る[チャンネル一覧表](http://www.maspro.co.jp/contact/bro/bro_ch.html)あたりが参考になると思います。

広島市内だとこんな感じ（チャンネル数少ないですね）

~~~:/var/www/html/epgrec/config.php:
// 広島地区デジタルチャンネルマップ（参考）
$GR_CHANNEL_MAP = array(
        'GR15' => '15', // NHK
        'GR14' => '14', // 教育
        'GR18' => '18', // 中国放送
        'GR19' => '19', // 広島テレビ
        'GR22' => '22', // 広島ホームテレビ
        'GR23' => '23', // テレビ新広島
);
~~~

同じように、`epgrec/config.php`ファイルに存在している以下の部分をチューナの数によって変更してください。

~~~
define( "TUNER_UNIT1", 0 );
~~~
0 → 2に変更。PT3が2枚なら4。

ここまでの設定が完了したら、いよいよEpgrecのWeb画面にアクセスです。

~~~
http:// OMVのIPアドレス /epgrec/
~~~

設定が出来ていれば以下のような表示がされているはずです。
（「地上デジタルチャンネルの設定確認」は設定によりまちまちです）

~~~
PHPのインストール状態をチェックします

epgrecのインストール状態をチェックします

ディレクトリのパーミッションチェック（777）

/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/templates_c...777...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/video...777...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/thumbs...777...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/settings...777...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/cache...777...ok
ファイルのパーミッションチェック（755）

/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/recomplete.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/shepherd.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/sheepdog.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/collie.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/airwavesSheep.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/trans_manager.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/scoutEpg.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/repairEpg.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/showEXmem.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/resetEXmem.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/epgwakealarm.php...755...ok
/media/49f6479a-ef38-479a-9605-586213b80145/wwwroot01/epgrec/gen-thumbnail.sh...755...ok
地上デジタルチャンネルの設定確認

現在、config.phpでは以下のチャンネルの受信が設定されています。受信不可能なチャンネルが混ざっていると番組表が表示できません。
物理チャンネル15
物理チャンネル14
物理チャンネル18
物理チャンネル19
物理チャンネル22
物理チャンネル23
以上を確認し次の設定に進む
~~~

「以上を確認し次の設定に進む」リンクを押してください。

各設定を以下の情報を参考に設定してください。

#### <i class="fa fa-edit" style="font-size:1em;"></i> MySQLデータベース設定
|設定|値|備考
|:--|:--|:--|
|MySQLホスト名|localhost|デフォルト|
|MySQL接続ユーザー名|epgrec||
|MySQL接続パスワード|epgrec||
|使用データベース名|epgrec||
|テーブル接頭辞|Recorder_|デフォルト|

#### <i class="fa fa-edit" style="font-size:1em;"></i> インストール関連設定
|設定|値|備考
|:--|:--|:--|
|インストールURL|http:// OMVのIPアドレス /epgrec||
|録画保存ディレクトリ|/video|tsファイルを格納するディレクトリを指定してください|
|サムネールの使用|使用しない|デフォルト|
|サムネール保存ディレクトリ|/thumbs|デフォルト|
|EPG取得用テンポラリファイルの設定（録画データ）|/tmp/__temp.ts|デフォルト|
|EPG取得用テンポラリファイルの設定（XMLファイル）|/tmp/__temp.xml|デフォルト|

#### <i class="fa fa-edit" style="font-size:1em;"></i> 使用コマンドのパス設定
|設定|値|備考|
|:--|:--|:--|
|epgdump|/usr/local/bin/epgdump|デフォルト|
|at|/usr/bin/at|デフォルト|
|atrm|/usr/bin/atrm|デフォルト|
|sleep|/bin/sleep|デフォルト|
|FFmpeg|/usr/bin/ffmpeg|デフォルト|

#### <i class="fa fa-edit" style="font-size:1em;"></i> 省電力の設定
|設定|値|備考|
|:--|:--|:--|
|省電力の設定|設定しない|デフォルト|

ここまで設定したら「設定を保存する」ボタンを押してください。
画面が遷移し、次の設定も引き続き設定してください。

#### <i class="fa fa-edit" style="font-size:1em;"></i> デジタルチューナー設定
|設定|値|備考|
|:--|:--|:--|
|地デジチューナーの台数|2|PT3の数×2です|
|BSチューナーの台数|2|PT3の数×2です|
|CS録画の有無|行う|CS放送を受信する場合は「行う」を設定してください|

#### <i class="fa fa-edit" style="font-size:1em;"></i> 録画関連設定
全てデフォルトで問題ありません。

#### <i class="fa fa-edit" style="font-size:1em;"></i> 録画ファイル名の形式
ここもデフォルトで問題ありません。
私は以下のように設定しています。

~~~
%ST%-%TITLE%
~~~

#### <i class="fa fa-edit" style="font-size:1em;"></i> 番組表表示設定
|設定|値|備考|
|:--|:--|:--|
|ページに表示する番組表の長さ|24||
|1局あたりの幅|150|デフォルト|
|1時間あたりの高さ|120|デフォルト|

ここまで設定したら「設定を保存する」ボタンを押してください。

~~~
初期設定が完了しました。
下のリンクをクリックするとEPGの初回受信が始まります。初回受信が終了するまで番組表は表示できません。

EPG受信後、/etc/cron.d/以下にcronによる定期EPG受信の自動実行を設定する必要があります。
Debian/Ubuntu用の設定ファイルは/media/XXXX/wwwroot01/epgrec/cron.d/shepherdです。
Debian/Ubuntuをお使いの方は
$ sudo cp /media/XXXX/wwwroot01/epgrec/cron.d/shepherd /etc/cron.d/ [Enter]

という具合にコピーするだけで動作するでしょう。ただしhttpdのドキュメントルートが/var/www/以外の場合は、それに合わせた修正が必要です。
それ以外のディストリビューションをお使いの方はDebian/Ubuntu用の設定ファイルを参考に、適切にcronの設定を行ってください。
なお、設定ミスや受信データの異常によってEPGの初回受信に失敗すると番組表の表示はできません。
設定ミスが疑われる場合、インストール設定を実行し直してください。
また、手動でEPGの受信を試みるのもひとつの方法です。コンソール上で、
$ sudo /media/XXXX/wwwroot01/epgrec/shepherd.php [Enter]

と実行してください。

EPGの受信には9分程度かかります。

このリンクをクリックするとEPGの初回受信を開始します。
~~~

一番下のリンクを押すと、番組表の取得を開始します。
動いているか気になる人は、sshで以下のコマンドを実行して`recpt1`が動いているか確認してみてください。

~~~bash
ps ax | grep recpt1
~~~

Web画面の「epgrecのトップページ」を押してEpgrecの画面に遷移してください。
番組表が正しく表示されれば成功です。

## <i class="fa fa-cube" style="font-size:1em;"></i> 番組表 自動更新の設定
OMV3の管理画面に移り、「スケジュールされたジョブ」メニューから自動実行するジョブの登録を行います。
追加ボタンを押して「スケジュールされたジョブの編集」ダイアログを開きます。
続いて、以下の設定でジョブを設定し、保存ボタンを押します。

|設定|値|備考|
|:--|:--|:--|
|有効|チェック||
|実行時刻|特定の日時|デフォルト|
|分|29||
|毎N分|チェックしない||
|時|2||
|毎N時|チェック||
|月の日|*|デフォルト|
|毎月N日|チェックしない|デフォルト|
|月|*|デフォルト|
|曜日|*|デフォルト|
|ユーザ|www-data||
|コマンド|php /var/www/html/epgrec/shepherd.php||
|電子メールの送信|チェックしない||

## <i class="fa fa-cube" style="font-size:1em;"></i> 最後に
以上でEpgrecUNAの設定は終わりです。
心ゆくまで録画ライフを満喫してください。

ちなみに、ウチではBS放送の番組表の取得ができません。
CSは取得できるのになぁ…。