Home Assistantで気付いたこと・分かったこと(Windows 11のスリープには2種類ある)
Windows 11のスリープには2種類ある―Modern Standby(S0)ではPing判定に注意 はじめに Home Assistantでは、Ping(ICMP)を利用してPCの起動・停止を判定する方法がよく紹介されています。 私もその方法を試したところ、期待どおり動作しませんでした。 原因を調べると、Windows 11には2種類のスリープ方式があることが分かりました。 Windowsには2種類のスリープがある Windowsのスリープには S3(従来のスリープ) S0(Modern Standby) があります。 項目 S3 S0(Modern Standby) CPU 停止 必要に応じて動作 ネットワーク 停止 一時的に通信することがある Ping 応答しない 応答することがある 自分のPCはどちら? コマンドプロンプトで powercfg /a を実行すると確認できます。 私のPCでは スタンバイ (S0 低電力アイドル) と表示されました。 つまり、Modern Standby対応PCでした。 Pingでは思ったように判定できなかった Pingを監視すると、 PCがスリープしているにもかかわらず、 接続 ↓ 切断 ↓ 接続 ↓ 切断 を繰り返していました。 そのため、 「スリープした」 ことを正しく判定できませんでした。 HASS.AgentのSessionStateを試した そこで、 HASS.Agentの SessionState を利用してみました。 取得できた状態は Unlocked Locked unavailable でした。 SessionStateは安定していた 気付いたこと 気付いたこと SessionStateを確認すると、 Pingのような 接続 ↓ 切断 ↓ 接続 という繰り返しは発生しませんでした。 スリープ中は安定して状態を維持し、 Pingよりも安定してPCの状態を取得できることが分かりました。 気付いたこと 今回分かったことは次のとおりです。 WindowsにはS3とS0(Modern Standby)の2種類のスリープがある。 Modern Standbyではスリープ中でもネッ...