Raspberry Pi zero wでPCの電源ボタンをIoT化する

タイトルのとおりです。Windows 10になってからWake on LANがうまく行かなくなっていたので無理やりWake on LAN的な何かをしてやろうという事で、やってみました。

準備するもの

  1. Raspberry pi zero 2160円
  2. トランジスタ(KSC1815YTA) 22円
  3. 導線 320円
  4. MicroSDカード 500円

配線作業

まず、Raspberry Pi zeroのピンアサインを確認しましょう。

引用: http://hara.jpn.com/_default/ja/Topics/RaspPiZero.html

まず、前提条件として以下の条件を上げます
・ケース内USBから電源を取る
・ケースSWの入力を検出し、中継する。
この条件を元に配線をすると以下のようになります。

実際にPC内部に組み込むとこんな感じです

物理スイッチ中継設定

少し不親切ではありますが、OSのインストールやネットワーク設定は済んでいる前提で話を進めます。
以下のリンク先が参考になります。

Raspberry Pi Zero(W, WH)のセットアップ – Qiita
Raspberry Pi Zero Wをディスプレイやキーボードなし….

swrelaydのインストール

swrelaydとは何ぞや?と思われるかもしれませんが、自分で作ったプログラムなので誰も知らないはずです。
数分で作った代物なので適宜書き換えて使いましょう。
ただし、配線図を全く同じにしていれば以下のコマンドを叩くだけで使えます。

無事にインストールが終われば電源ボタンが反応するようになっているはずです。
もし配線を独自に繋ぎ変えているのであれば、3、4行目を編集してコンパイルし直してください。

webUI設定

これも自作プログラムです。こっちの方もまともなコードではないので適宜書き換えて対応してください。

事前準備

前提条件としてnginxとPHPが導入されている必要があります。
以下のリンクを参考に設定してください。


RaspbianにnginxとPHP7.0を入れたいな – Qiita

前提条件が整ったらパーミッションの設定をします。
以下のコマンドを入力してください。

これでPHPから電源が操作できるようになりました。

Web UIインストール

以下のコマンドでダウンロードして、展開後にWebの公開ディレクトリに保存してください。

ダウンロードしたら”action.php”を開いて2行目にパスワードを設定してください。

パスワードはphpファイル中に平文で保存されますが、フォーム送信の際はハッシュ化を行っているのでSSLなしの環境でも比較的安全に使えます。

ただし、ラズパイがクラックされると終わりなのでそのへんが気になる方は適宜プログラムを書き換えて対応してください。

実際に使ってみる

Raspberry Pi zeroのIPアドレスにwebブラウザからアクセスすると以下のような画面が出てくると思います。

先程設定したパスワードを入れてボタンを押せばOKです。
PCの電源がONかOFFかの判定はしていないので悪しからず。

というわけで今回の記事は以上になります。
質問等があればコメント欄にどうぞ。