概要
デスクトップPCに付属している電源ボタンの回路を、ラズパイで電気的に横取り(?)し操作します。
ラズパイに外部からsshするなり、Webフロントエンドを適当に用意するなりすれば、リモートでデスクトップPCの電源を入れることができます。
回路構成図とPythonの実装サンプルを記載します。
- WakeOnLan非対応でも可能
- 電源ボタン長押しも再現できるため、PCの強制再起動までもリモートで実行可能
構成
- Raspberry Pi 4
- フォトカプラ( フォトカプラ PS817: オプトエレクトロニクス 秋月電子通商-電子部品・ネット通販 を使いました)
- GPIO23を使いました
ラズパイGPIO図 Raspberry Pi OS - Raspberry Pi Documentation より
フォトカプラ図 PS817データシートより
スクリプト
下記スクリプトを~/make-pulse.py
に設置
#!/usr/bin/env python3
# デスクトップPCのスイッチをラズパイで横取りすることでリモート起動させる
#
# Usage
# ./make-pulse.py <PIN> <DURATION_SECONDS>
#
# e.g.
# ./make-pulse.py 23 0.3
#
import RPi.GPIO as GPIO
import sys
import time
args = sys.argv
pin = int(args[1])
duration_seconds = float(args[2])
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT, initial=GPIO.LOW)
# スイッチ押下
# (GPIO<PIN>の出力をオンにして、<DURATION_SECONDS>後、オフにする)
GPIO.output(pin, GPIO.HIGH)
time.sleep(duration_seconds)
GPIO.output(pin, GPIO.LOW)
GPIO.cleanup()
実行権限を付与
chmod +x ~/make-pulse.py
PCが起動するかテスト
./make-pulse.py 23 0.3
おまけ
iPhoneから起動させる
iOSの「ショートカット」アプリ経由で実行できるととても便利です。ラズパイへSSHできる設定がされているとして、下記のように設定します。
- アプリを起動
- 右上「+」を押下し新規ショートカット
- アクションを追加
- 「SSH経由でスクリプトを実行」を選択
- スクリプト、ホスト、ユーザ、認証(パスワード・SSHキー)を入力
スクリプトは下記のように、先程のスクリプトの起動コマンドを入力します
~/make-pulse.py
ウィジェットなどで設定しておくと、リモコン感覚で起動できました。