min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

PHP からbash(atコマンド)を叩いてテレビを予約録画する → 成功

前回は fedora のコンソール(bash)で、atコマンドを利用して予約録画できるようにした。

min117.hatenablog.com

ここまでくれば、あとはPHPでWeb画面を作り、入力にあわせてbashで処理していけばいい。さっそくテレビの予約録画画面を作った。

 

 

 

画面(html)はこれ。開始時刻とチャンネル、予約録画秒数を指定して「予約録画セット」を押すだけ。

recYOYAKU.html

f:id:min117:20180319000712p:plain

押すとPHPに画面が遷移する。見た目はカッコ悪いけど、当面は必要な情報がとれれば良し。そのうちJavaScriptでも使って整形する。

recYOYAKU.php

f:id:min117:20180319000719p:plain

ソースはこれ。

recYOYAKU.html

f:id:min117:20180319002914p:plain

f:id:min117:20180319003041p:plain

f:id:min117:20180319003213p:plain

recYOYAKU.php

f:id:min117:20180319003714p:plain

f:id:min117:20180319003644p:plain

録画が実行されているかをサーバでモニタリングするのには即席のスクリプトを使った。for文でコマンドを回せばいいだけだが、一点だけ注意なのは「atコマンドによる予約状況を全ユーザ分すべて確認するにはatqコマンドを管理者権限で叩く必要」がある点。あらかじめ sudo しておくとよい。

$ sudo -s

# for i in `seq 1 100`; do echo "$i"; ls -shal | grep 予約; cat myAT.sh; sudo atq; sleep 2; clear; done

f:id:min117:20180319001903p:plain

f:id:min117:20180319005011p:plain

予約が正常にされたかどうかは、atqコマンドの出力=黄色枠部分に(rootでされた)予約が1行増えるかどうかで判断できる。

myAT.shはPHPにより毎回作られるので、赤枠部分のように、作成日付を出力するようにした。PHP内で、fputs()を使って書いている。

 

これでもう、iPhoneだろうがAndroidだろうがiPadだろうがWebブラウザさえあれば全世界どこからでも予約録画できる環境は作れた。

次回は Google Home Mini に連携させる。「ねえGoogle、●●時に NHK を予約して」というオーダに合わせて予約録画できるようにする

次回に続く。