デコシノニッキ

ホロレンジャーの戦いの記録

HoloLensのスリープ時間を変更する

HoloLensは既定の設定範囲だとスリープタイマーは最大30分ですが、それでもやっぱり煩わしいのでスリープしないようにしました

(参考)
forums.hololens.com

本来デバイスポータルの値は、REST API (https://developer.microsoft.com/en-us/windows/mixed-reality/device_portal_api_reference)を叩いて操作するのですが、電源周りはAPIから呼び出すことができません。

では何をPOSTしたら変更が加わるのか、少し見てみましょう。ChromeならF12でデベロッパーツールを立ち上げてください。
そして設定を変更してみます。
f:id:haikage1755:20170717211753p:plain

すると、どのようなRequestがとんできているか分かるはずです。
f:id:haikage1755:20170717212334p:plain

つまり、ここにあるRequestと同じようにPOSTしてやれば変更できるということですね。

なぜ僕はUnity側でこれを実装しようと思ったのか謎なのですが、まあ手軽に試せるという意味ではいいのかな(適当)

■ ヤり方

1.InspectorからデバイスポータルにアクセスするURL、ユーザー名、パスワードを入れる
2.シーン起動
3."S"ボタンを押す
4.デバイスポータルを更新し、次のようになっていたら成功

f:id:haikage1755:20170717210617p:plain

  [Tooltip("DevicePortal URL")]
    public string url = "127.0.0.1:10080";
    [Tooltip("DevicePortal UserName")]
    public string usr = "USR";
    [Tooltip("DevicePortal Password")]
    public string pass = "PASS";

  void Update () {
        if (Input.GetKeyDown(KeyCode.S))
        {
            StartCoroutine(OnSetVideoIdle());
            StartCoroutine(OnSetStanbyIdle());
        }
  }

    IEnumerator OnSetVideoIdle()
    {
        WWWForm form = new WWWForm();
        var req = UnityWebRequest.Post("http://" + url + "/api/power/cfg/SCHEME_CURRENT/SUB_SLEEP/VIDEOIDLE?ValueAC=0&ValueDC=0", form);
        req.SetRequestHeader("AUTHORIZATION", Authenticate(usr, pass));
        yield return req.Send();
    }

    IEnumerator OnSetStanbyIdle()
    {
        WWWForm form = new WWWForm();
        var req = UnityWebRequest.Post("http://" + url + "/api/power/cfg/SCHEME_CURRENT/SUB_SLEEP/STANDBYIDLE?ValueAC=0&ValueDC=0", form);
        req.SetRequestHeader("AUTHORIZATION", Authenticate(usr, pass));
        yield return req.Send();
    }

    string Authenticate(string username, string password)
    {
        string auth = username + ":" + password;
        auth = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth));
        auth = "Basic " + auth;
        return auth;
    }

[デコシノニッキ]は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」