前回はPHPからGPIOを制御する方法を試したのですが、うまく動作しませんでした。今回はその解決方法を記載したいと思います。
Apacheのエラーログの確認
PHPのWebページでstartボタンを押すと、pythonコードが実行され、LEDが光るようにコードを作成したつもりですが、LEDが全く光りません。まずは状況を確認するため、apacheのエラーログを確認しました。エラーログは下記の場所にあります。
/var/log/apache2/error.log
開いてみると
RuntimeError: No access to /dev/mem. Try running as root!
とエラーが出ています。GPIOにアクセスできない、ルート権限で実行しろっという内容です。
apacheユーザーに権限付与
いろいろと調べてみると下記のコマンドでapacheユーザー(www-data)をgpioグループに追加し、apacheユーザーに権限を付与する必要がありそうです。
sudo usermod -a -G gpio www-data
再度、動作確認
上記のコマンド実行後、再度PHPで作成したWebページのStartボタンを押してみると、LEDが光っています。Stopボタンを押すと、LEDが消灯します。問題を解決して、ハードウェアが動作するとうれいしですね!
少し苦労しましたが、これでPHPからpythonコードを実行して、GPIOを制御することが可能になりました。WebページからGPIOが制御できますので、パソコンだけでなくスマートフォンからでもWebページを開いてGPIOを操作することができます。
GPIOを使用してセンサーやカウンタ等でハードウェアの情報を取得し、スマホでWebページを開きハードウェアの情報を確認する、ということがこれでできるようになります。いま流行りのIoTがRaspberry Piでもできそうです。