RaspberryPi x Laravel x リモコンサーバー

RaspberryPi x Laravel x リモコンサーバー

こんにちは、なかしーです。
寒くなって来ましたね。エアコンの時期です。
ということで、我が家のRaspberry Pi君を、現在のAirPlayサーバー、VPNサーバーだけでなく、リモコンサーバーにもしてみました。
ざっくり環境:

  • 機器:raspberry pi B+ (Firmは最新化済)
  • OS:raspbian jessie
  • Framework:laravel 4.2
  • HTTP:apache2 2.4
  • PHP:php5.6
  • DB:mysql(バージョンなんだろう?最新のやつ)

やり方は、先人達が詳しくやり方をのせてらっしゃるので、それを参考にした感じです。但し、RaspbianのJessieを使っている場合はデバイス関連の扱いがWheezyと違うので、要注意です。(ここでハマって、2回クリーンインストールした。。)

  • /etc/modulesではなく/boot/config.txtを弄ります
  • sudo cat /sys/kernel/debug/gpioしても、リストされません。

英語記事やらさんざん見てみましたが、結論として、日経BPさんの記事Raspberry Piをリモコンにしてエアコン制御、ロボットにも搭載が一番参考になりました。感謝。
 
そして、ある程度コマンドレベルでLIRCが動かせる様になったら、次は無駄にLaravelを入れてみます。(単に、MVCの書き方に慣れすぎたせいで、普通のPHPコードを書くのが億劫なだけ、、という。。)
下ごしらえ:

  • sudo apt-get install at (一時ジョブ用として使う。Cronよりお手軽。)
  • sudo apt-get install apache2 (入ってるかな?)
  • sudo vi /etc/apache2/sites-available/000-default.conf (必要に応じてドキュメントルート変更)
  • sudo vi /etc/apache2/apache2.conf (同じくドキュメントルート変更分と、AllowOverride Allにする)
  • sudo a2enmod rewrite
  • sudo vi /etc/apache2/ports.conf (Portを80ではなく8080とかにする)
  • sudo vi /etc/apache2/sites-enabled/000-default (同じくPort変更)
  • sudo service apache2 restart
  • sudo apt-get install mysql-server (rootのパスワードは適宜)
    • インストール確認
      mysql -u root -p
      select user,host,password from mysql.user;
      ->ユーザーが5つ表示されることを確認
    • アプリ用のユーザー作成
      GRANT ALL PRIVILEGES ON <DB名>.* TO <ユーザー名>@localhost IDENTIFIED BY ‘<パスワード>’ WITH GRANT OPTION;
      select user,host,password from mysql.user;
      ->ユーザーが6つ表示されることを確認
    • アプリ用のデータベース作成
      CREATE DATABASE <DB名> CHARACTER SET utf8;
      select host,db,user from mysql.db;
      ->データベースが1件表示されることを確認
  • sudo apt-get install php5-mysql
  • sudo apt-get install unzip (入ってれば良いです)
  • sudo apt-get install curl (入ってれば良いです)
  • sudo apt-get install openssl (入ってれば良いです)
  • sudo apt-get install php5-mcrypt
  • sudo /etc/init.d/cron start (Cronを使えるようにする)
  • 家のルーターに穴を開ける。(上でapacheのポート変更した番号をRaspberry Pi君に渡してあげる)
  • DDNSなどを適宜設定する。(すいません、私はここは手抜きしているので割愛)
  • SSL(お金が有れば鍵を買いましょう。。無ければ野良・・?)
  • リモコンコマンドの準備
    • irsend SEND_ONCE  XXX XXXX で扱える様に、複数登録しておく
    • カンタンで良いのでスクリプトに上記を突っ込む
    • 上記スクリプトをアパッチで使えるように、sudoers下部に以下エントリ追加する(XXXはスクリプトのパス)
      www-data ALL=NOPASSWD:/XXXXXXXX

 
はい。ここまでくれば、あとは既にどこかで動かしてあるLaravelをまるごとtarで持ってくれば動きます。(というか、疲れたのでcomposerの設定するが面倒になっただけです。初Laravelの人は、、他所の記事を参考にして下さい。。。スマソ)
Laravel確認事項:

  • 初回のmigrate (不要なら不要です)
  • app/config以下を見直す
    • appのKey要素
    • databaseのDB設定
    • emailの各種設定
    • その他。。
  • ユーザー認証をしていれば、ユーザーを再作成する(必要な分だけ)
  • コマンド実行は、raspiコントローラを作って(非REST)、getIndexの引数みてswitch文でコマンド実行してからreturnするようにしてみてます。ここはそのうちもすこしマシにする予定。

 
ということで、わざわざここまでしてリモコンサーバー on Raspberry Pi powered by Laravel環境を作る意味は謎ですが、まぁ、やってみたかったのでやりました。
若干メモ感は半端ない記事ですが、その内ハンズオンセミナーなどやってみますかね。
今後やる事:

  • リモコンコマンドのジョブスケジュール登録を可能にする(atコマンドを使う)
  • 予約済みジョブを変更する(atqコマンドでリストアップして削除などを行う、Cronを編集する)
  • 室温センサーで現在の室温・外気温をモニターする
  • 気圧計をつけてみる

とかかなー。次回あたりは回路図など載せていきます。
では。
 
役に立ったよ、という方、(役に立たなかったよ!という方も)
Facebookページにいいね!して頂けると嬉しいです。
まだの方は、ビジネスクリエーターズへの会員登録をどうぞ。
会員登録は無料です。
◆◆スタッフ募集中◆◆
ビジネスクリエーターズでは、
一緒に活動するスタッフを募集中です。
今よりもちょっと成長のスピードを上げたい方は、
ぜひ一緒に活動しましょう♪
友だち追加数

Nakashima