みなさん、こんにちは。
IoTシステムを運用していると、「普段はデバイスの電源をオフにしておき、必要な時だけオンにしたい」というケースがよくありますよね。しかし、そのたびに現地まで足を運んで電源を操作するのは現実的ではありません。
そこで今回は、離れた場所からPCやRaspberry Piの電源を操作する方法を解説します。
PCをリモートから起動する | Wake-on-LAN (WoL) を活用する
PCを遠隔から起動するには、「Wake-on-LAN(WoL)」という機能を使います。これは、ネットワーク経由で「マジックパケット」と呼ばれる特殊な信号を送ることで、PCを起動させる技術です。
事前準備
WoLを使うためには、PC側でいくつか設定が必要です。
BIOS/UEFIの設定
まず、PCのBIOSまたはUEFI設定に入り、WoLを有効にします。
- BIOS/UEFIへの入り方
これはメーカーや機種によって異なります。PCのマニュアルを参照してください。 - Wake-on-LANの有効化
設定項目は「ACPI」や「APM」といった名前になっていることが多いですが、これもメーカーによって異なります。
「Disable」になっていたら「Enable」に変更しましょう。 - 節電モードの無効化
「Deep Sleep」などの項目を探し、「Enable」になっていたら「Disable」に変更します。これは、PCが完全に電源オフになった際にネットワークアダプタへの電力供給が止まらないようにするためです。
OSごとの設定
OSによっても追加の設定が必要です。
Windowsの場合
- ネットワークアダプタのプロパティ設定
- デバイスマネージャーから使用しているネットワークアダプタのプロパティを開きます。
- 「詳細設定」タブで「Wake on Magic Packet」などの項目を「有効」にします。
- 高速スタートアップの無効化
- 「コントロールパネル」>「システムとセキュリティ」>「電源オプション」>「電源ボタンの動作を選択する」へ進みます。
- 「現在利用可能ではない設定を変更します」をクリックします。
- 「高速スタートアップを有効にする(推奨)」のチェックを外し、「変更の保存」をクリックします。
- 高速スタートアップが有効になっていると、完全にシャットダウンされず、WoLが機能しない場合があります。
Debian / Ubuntuの場合
- ethtoolのインストール
sudo apt install ethtool
Red Hat系の場合はyumやdnfコマンドを使ってインストールしてください
- WoLの有効化
一時的にWoLを有効にするには、以下のコマンドを実行します。sudo ethtool -s インターフェース名 wol g
インターフェース名は、eth0
やenp0s3
など、環境によって異なります。ip a
コマンドなどで確認できます。
この設定は再起動すると元に戻ってしまいます。
- WoL設定の永続化
再起動後もWoLが有効になるように、以下のシェルスクリプトを作成します。
そしてこのスクリプトに実行権限を与え、init.d
に登録するか、systemd
を使ってrootで自動実行させます。
#!/bin/bash
ethtool -s インターフェース名 wol g
exit
Wake-on-LANの実行
準備ができたら、実際にPCを起動してみましょう。
WindowsからWoLを実行する場合
PCを起動する側がWindowsの場合、WoLツールをダウンロードして使います。「wake on lan windows」などのキーワードで検索すれば、多くのフリーソフトが見つかりますので、使いやすいものを選んでください。
PC終了時の注意
WoLで起動させるPCは、完全にシャットダウンするのではなく、スリープ状態にすることをおすすめします。シャットダウンするとネットワークアダプタへの電源供給が止まり、WoLが機能しない場合があります。
Debian / UbuntuからWoLを実行する場合
- wakeonlanのインストール
sudo apt install wakeonlan
Red Hat系の場合はyumやdnfコマンドを使ってインストールしてください
- PCの起動
以下のコマンドを実行します。wakeonlan 起動させたいPCのMACアドレス
MACアドレスは00:11:22:33:44:55
のような形式です。Windowsならipconfig /all
で、Linuxならip a
で確認できます。
対象PCがすでに起動している場合は、起動済みか確認してから実行する以下のようなシェルスクリプトを作成すると便利です。
#!/bin/bash
/bin/ping 起動させたいPCのIPアドレス -c 1 >> /dev/null
if [ $? = 0 ]; then
echo "PC is already turned on"
else
wakeonlan 起動させたいPCのMACアドレス
echo "Booting Up"
fi
PC終了時の注意
Linuxの場合、ethtool
でネットワークアダプタのWoLを永続化していれば、通常通りシャットダウンしても問題ありません。
Raspberry Piをリモートから起動する | スマートプラグを活用する
残念ながら、Raspberry PiはWake-on-LANに非対応です。そのため、別の方法としてスマートプラグを使用します。スマートプラグは遠隔から電源のオンオフを操作できる便利なデバイスです。
おすすめのスマートプラグ
手軽に入手でき、遠隔操作も可能なものとして「TP-Link」製のスマートプラグがおすすめです。
TP-Linkスマートプラグの遠隔操作
Pythonライブラリの「python-kasa」を使うと、TP-Link製スマートデバイスをコマンドラインやスクリプトから操作できます。
- python-kasaのインストール
pip install python-kasa
- 使い方
- 電源ON
kasa --host スマートプラグのIPアドレス on
- 電源OFF
kasa --host スマートプラグのIPアドレス off
- 電源OFF時の注意
Raspberry Piの電源をOFFにする際は、事前にRaspberry Pi側でシャットダウン操作をしておくことを強くお勧めします。いきなり電源を切ってしまうと、OSが破損する可能性があります。
- 電源ON
まとめ | リモート起動でIoTシステムをさらに快適に!
いかがでしたでしょうか? 今回ご紹介したWake-on-LAN(WoL)とスマートプラグを活用することで、遠隔地からでもPCやRaspberry Piの電源を自在に操作できるようになります。
特にIoTシステムにおいては、デバイスを必要な時だけ稼働させることで、消費電力の削減やデバイスの長寿命化が期待できます。また、現地に赴くことなく電源をオンオフできるため、運用コストの削減や管理の効率化にも大きく貢献するでしょう。
これらのリモート起動術は、一度設定してしまえば、あなたのIoTシステム運用を格段に快適にしてくれます。ぜひ、ご自身の環境に合わせてこれらの方法を試してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よいIoTライフを!