Device Portal APIを使ってNode-RED経由でHoloLensからアプリを起動させるメモ

Device Portal APIを使ってNode-RED経由でHoloLensからアプリを起動させるメモです。

展示ごとなどで特定のアプリを遠隔で起動できると幸福度が増しそうなのでやってみます。

Device Portal APIドキュメントから探す

まず、Device Portal APIドキュメントから、起動できそうなものを探してみます。

Device portal API reference

ちょっと名前がわかりにくいですがTask Managerが該当するようです。

image

/api/taskmanager/app (POST)
Starts a modern app
Parameters
appid : PRAID of app to start, hex64 encoded
package : Full name of the app package, hex64 encoded/api/taskmanager/app (POST)

どうも、hex64 encodedされたPRAIDというものを付与する必要があるようです。

PRAIDというものをDevice Portalページで一旦実行させて知る

ということで、Device Portalページで一旦実行させて値を調べましょう。

image

HoloLensのDevice Portalページにアクセスします。今回はデベロッパーツールが使いたいのでChromeでアクセスします。

image

App Managerページで実際に実行してみます。

image

まずChromeでデベロッパーツールを起動しておきます。

image

今回実行したいHoloIFTTTを選択してStartを押します。

image

しばらく待つとアプリが起動しました。

image

アプリが起動したら先ほどのAPIリファレンスを元に直後の /api/taskmanager/app?appid= になっているものを探してhex64 encodedされたPRAID込みのURLをメモしておきます。

https://192.168.XX.XX/api/taskmanager/app?appid=XXXXXXXXXXXXXXXXXXXXXXXXX

これで準備は完了です。

Node-REDフロー

Node-REDフローを作っていきます。Device Portal APIでHoloLensの情報や操作をNode-REDダッシュボードで行うメモの記事をベースにしてやってみます。

image

Node-REDフローはこのようになります。

injectノード

image

image

injectノードは文字列を空で送っておきます。

changeノード

image

image

実際に送るURLをchangeノードに設定します。上述の通りmsg.urlの設定に先ほどのアプリ起動URLを設定します。

http requestノード(POST)

image

image

http requestノードは以前の記事のとおりに設定しておきます。

特に注意すべき点としてはBasic認証にauto-をつけるところでしょう。

実際に動かしてみる。

デプロイしたら早速動かしてみます。

image

私の場合は同じネットワーク上の別Windows機のNode-REDから発動させました。

image

HoloLensが受信すると今回起動したいHoloIFTTTアプリが無事起動しました!

Node-REDフローのJSONも置いておきます

今回のNode-REDフローのJSONも置いておきます。使ってみたい方はインポートしてみて下さい。

[{"id":"8383be68.2674f","type":"change","z":"eb234315.dc4b1","name":"/api/taskmanager/app","rules":[{"t":"set","p":"url","pt":"msg","to":"https://192.168.XX.XX/api/taskmanager/app?appid=XXXXXXXXXXXXXXXXXXXXXXXXX","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":516,"y":600,"wires":[["1f82954a.edf98b"]]},{"id":"57623e3.a5469c","type":"inject","z":"eb234315.dc4b1","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":319,"y":601,"wires":[["8383be68.2674f"]]},{"id":"1f82954a.edf98b","type":"http request","z":"eb234315.dc4b1","name":"POST","method":"POST","ret":"txt","url":"","tls":"49d6016a.ababa","x":710,"y":600,"wires":[["b68ec125.cd5c5"]]},{"id":"b68ec125.cd5c5","type":"debug","z":"eb234315.dc4b1","name":"","active":true,"console":"false","complete":"payload","x":885,"y":600,"wires":[]},{"id":"49d6016a.ababa","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","verifyservercert":false}]

今回のような事ができると任意のアプリが遠隔で起動できるのでHoloLens体験時がスムーズに対応できたり、複数のHoloLens機で起動するアプリが揃えられたりと用途が色々ありそうです。

それではよき HoloLens & Node-RED Life を!