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ではスリープ中でもネットワーク通信が行われることがある。
  • そのため、PingだけではPCの状態を正しく判定できない場合がある。
  • HASS.AgentのSessionStateは今回の環境では安定した状態を取得できた。

コメント

このブログの人気の投稿

TOTOの洗面台の水栓の吐水口網を交換してみた

ソフトバンク光でスマホdeひかり電話

パワーポイントでPDF変換ができない