台風14号が近づいていて、関東でも明日から雨のようです。買い物に行っておかなければ。
さて、先日購入した、Raspberry Pi Zero 2 Wを利用して、Alexaからパソコンの電源ON/OFFができるようになりました。
あれから、持っていたMicroSDカードが読み込み4MB/sのタイプで遅すぎたので、100MB/sのものに買い換えています。
Alexaでパソコンの電源ON/OFF
これまで、パソコンの電源のOFFは、Assistant Computer Controlを使用してAlexaから行っていました。 そして、電源のONは、Sleep状態にしておいてキーボード操作から復帰するという方法を使っていました。
ただ、両方とも安定していませんでした。Assistant Computer Controlはログイン状態でないと使えないし、ログインしても動かないことも時々あり。Sleep状態の方も間違って復帰することが時々起きてしまっていました。
という訳でRaspberry PiでON/OFFする方法に切り替えました。
Node-REDのインストール
最初はhomebridgeでやろうとしていたのですが、2$/月がかかるという事が分かったため、Node-REDを使用することにしました。
インストールを、公式(Raspberry Piで実行する : Node-RED日本ユーザ会)に従って行うと「Install Node-RED core」で、失敗してしまいました。 なので今回は以下の方法でインストールしました。
$ sudo apt install nodered
デフォルトでは、piというユーザ名を期待しているので、/lib/systemd/system/nodered.service のUser, Group, WorkingDirectoryを使用するユーザ名に書き換える必要があります。
Alexaとの連携の設定
AlexaからNode-REDを使えるようにするのは以下の通りにやれば一発で出来ました。
AlexaにNode-REDのスキルを追加すると、Node-REDに登録したものが、Alexaのデバイスに出てきて、少し感動しました。
残りの手順は以下です。この手順でWindows 10にsshで(パスワードなしで)ログインする設定以外はうまくいきました。
Wake On LanでPCを起動、sshでWindows 10にログインしてshutdownコマンドを実行という感じです。
Windows 10 にsshでログインできるようにする
という訳で、ここだけ詰まったので、何に詰まったか書いておきます。 Windows 10へのssh接続事態は、検索したら山ほど出てきます。
- Windows 10にopensshをインストール
- C:\ProgramData\ssh\sshd_configの最後2行をコメントアウト
- ssh-keygenで id_rsa と id_rsa.pubを作成
- id_rsaをraspberrypiの~/.ssh/配下に置く (.ssh のパーミッションは700にする)
- id_rsa.pubをWindowsの$HOME\.ssh\authorized_keysとして置く (authorized_keysのパーミッション設定する)
という感じで、さして難しくない手順です。
ただ、最後の authorized_keys のパーミッションの設定がわからずに難儀しました。 最終的に以下を行うことでパスワードなしでのログインができるようになりました。
PS C:\> icacls.exe $HOME\.ssh\authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
IPアドレスを固定
ルータの設定で、WindowsとRaspberry PiにDHCPで割り当てられるIPアドレスを固定しておく必要があります。 Raspberry Pi側は必須ではないですが、固定しておいたほうがわかりやすいと思います。
まとめ
Raspberry Pi Zero 2 WとNode-REDの組み合わせで、PCの電源ON/OFFがAlexaから行えるようになりました。 今のところ安定して使用できています。
お値段はトータルで5,000円くらい掛かっています。 一度Raspberry Piは触ってみたかったので丁度よかったとはいえ、他にも使い道を探したいなあと思っています。