はじめに

前回はRaspberry Piのセットアップについて紹介しました。今回はメインとなるRaspberry Piを使用してブラウザからリモコンを操作する設定について紹介していきたいと思います。

Raspberry Piで何ができる?ブラウザからリモコンを操作してみる -前編-

PCからRaspberry Piに接続してみる

Raspberry Piを操作する方法としてWindowsやMacのように視覚的に操作できたり(GUI)、コマンドを使用して操作する(CLI)ことができます。ただ、Raspberry Piにモニターやキーボードなどの周辺機器を接続する必要があるため、新たに用意するもしくは別で使用している機器を使用するたびに接続しなおすことになります。

そこでssh接続を利用することによってPCから接続してコマンドで操作することができるようになります。接続元のPCがWindowsの場合接続するにはTeratermなどのクライアントツールが必要となるのでまずはTeratermをインストールします。

こちらからTeratermのインストーラーをダウンロードし開きます。ウィザードに沿ってインストールをします。

使い方

Teratermを開き、ホストの部分にRaspberry PiのIPアドレスを入力し、OKをクリックします。

設定したユーザとパスワードを入力し、OKをクリックすることでRaspberry Piに接続することができます。

赤外線センサーを操作してみる

ソフトウェアのインストール

赤外線センサーを制御するためのソフトウェアであるcgirをインストールします。以下のコマンドを入力してください。

sudo python3 -m pip install -U cgir              

以下のコマンドを入力して、Raspberry PiでGPIOを制御するライブラリのpigpioを使用するためにpigpioのサービスを起動します。

sudo systemctl start pigpiod              

毎回起動するのは大変なので、以下のコマンドを入力してRaspberry Piが起動したときにpigpiodを自動で起動する設定を行います。

sudo systemctl enable pigpiod              

以下のコマンドを入力して、pigpiodが動いていることを確認できます。

systemctl status pigpiod              

cgirとpigpioはポート番号が8888で通信するのでapacheなどのソフトウェアで使用しないように気を付けてください。

ソフトウェアを使用してみる

以下のコマンドを入力し、Raspberry Piに向けて登録したいリモコンのボタンを押すことで登録することができます。<赤外線コードの名前>はお好みでつけてください。

cgir rec <赤外線コードの名前>              

受信が完了すると受信コードと赤外線コードが登録しました。というメッセージが表示されます。

Raspberry Piを操作したい機器に向け、以下のコマンドを入力することで登録した赤外線を送信し、機器を操作することができます。

cgir send <赤外線コードの名前>              

ソフトウェアがうまく動作しない場合

私の作成した環境では最初、赤外線コードの送受信がうまくいかなかったので以下の対応をしました。
送信がうまくいかない場合は以下のコマンドを実行してファイルを編集します。

sudo nano /lib/systemd/system/pigpiod.service              

ExecStart=の行を以下のようにします。

ExecStart=/usr/bin/pigpio -l -t 0              

編集後以下のコマンドで再起動を行い完了です。

sudo reboot              

送信後、赤色LEDが点灯、点滅し、Raspberry Piの動作がおかしくなった場合は以下のコマンドを実行し、ファイルを編集します。

sudo nano /lib/systemd/system/pigpiod.service              

[Unit]の一番最後に以下を追記します。

After=multi-user.target              

編集後以下のコマンドで再起動を行い完了です。

sudo reboot              

ブラウザから赤外線リモコンを操作する

Webサーバソフトウェアを導入する

Webページを表示させるためのWebサーバソフトウェアをインストールします。今回はApacheというソフトウェアをインストールします。

まず最初に、以下のコマンドを実行してRaspberry PiのOSのアップデートとアップグレードを行います。

sudo apt update   
sudo apt upgrade -y           

             

完了後、以下のコマンドを実行してApacheのインストールを行います。

sudo apt install apache2 -y              

正常に動作している場合は他のPCのブラウザでURLにRaspberry PiのIPアドレスを入力するとApahceのテスト画面が表示されます。

今回はphpを使用してWebページを作成するため以下のコマンドを実行してphpもインストールしておきます。

sudo apt install php              

・Webページを作成する。

ブラウザから操作するためのWebページをphpとhtmlを使用して作成します。今回は部屋の電気とエアコンの暖房のものを操作できるようにするページを作成します。
まずは部屋の電気とエアコンの暖房の赤外線コードを登録します。今回は登録するコードの保存先のファイルを/home/pi/codes/code.jsonとするためにまずcodesディレクトリを作成します。

mkdir /home/pi/codes              

部屋の電気の赤外線コードを登録します。コードの名前はlightにします。

cgir rec light -c /home/pi/codes/code.json              

暖房の赤外線コードを登録します。コードの名前はheatingにします。

cgir rec heating -c /home/pi/codes/code.json              

次に以下のコマンドを実行して、Webページを作成します。

sudo nano /var/www/html/remote.php              

記載する内容は以下のようにします。

<?php
    $result = "";
    if (isset($_POST['light'])) {
    $result = exec('/usr/local/bin/cgir send light -c /home/pi/codes/code.json 2>&1');
    }
    elseif (isset($_POST['heating'])) {
    $result = exec('/usr/local/bin/cgir send heating -c /home/pi/codes/code.json 2>&1');
    }
    echo $result;
?>
<!DOCTYPE html>
<html lang="ja">
    <head>
    <meta charset="UTF-8">
    <title>りもこん</title>
    </head>
    <body>
        <form action="remote.php" method="post">
            <button type="submit" name="light">電気</button>
            <button type="submit" name="heating">暖房</button>
        </form>
    </body>
</html>

ページを表示すると以下のようになります。

ページのタイトルは <title>りもこん</title>で決めることができます。今回はりもこんとしています。

ボタンの設定は<button type=”submit” name=”light”>電気</button>で決めることができ、今回は電気と暖房というボタンを作成しています。

$result = exec(コマンド); 

コマンドの部分に実行したいコマンドを入力することでコマンドを実行できます。

それぞれのボタンが押されたときに赤外線を送信するコマンドが実行されてほしいので

if (isset($_POST['それぞれのボタンの名前']))

で分岐を行っています。それぞれのボタンの名前の部分は

<button type="submit" name="それぞれのボタンの名前">ボタンの名前</button>

のname=”それぞれのボタンの名前”に対応しており、ボタンの名前に合わせて送信する赤外線コードのコマンドを実行できるように設定します。今回の場合ではそれぞれのボタンの名前がlightなものは赤外線コードlightを送れるに

$result = exec('/usr/local/bin/cgir send light -c /home/pi/codes/code.json 2>&1');

としています。

以上でブラウザで赤外線リモコンを操作するための装置の完成です。
それぞれボタンを押すことで電気とエアコンをつけることができるようになりました。

・注意点
apacheが使用できるように赤外線の登録先ファイルを設定する必要がある。

最後に

Raspberry Piを使用してリモコンをブラウザから操作する方法を紹介しました。今回紹介したものから派生して朝目覚ましが鳴るタイミングで電気をつけることや部屋の温度に合わせてエアコンの温度を調節することもできます。
また、Raspberry Piは既製品や自作の基盤を使用して様々なことができるので今回興味を持った方は色々なものに挑戦してみてはいかがでしょうか。