Device Portal APIを使ってNode-RED経由でHoloLensからアプリを起動させるメモです。
展示ごとなどで特定のアプリを遠隔で起動できると幸福度が増しそうなのでやってみます。
Device Portal APIドキュメントから探す
まず、Device Portal APIドキュメントから、起動できそうなものを探してみます。
ちょっと名前がわかりにくいですがTask Managerが該当するようです。
/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ページで一旦実行させて値を調べましょう。
HoloLensのDevice Portalページにアクセスします。今回はデベロッパーツールが使いたいのでChromeでアクセスします。
App Managerページで実際に実行してみます。
まずChromeでデベロッパーツールを起動しておきます。
今回実行したいHoloIFTTTを選択してStartを押します。
しばらく待つとアプリが起動しました。
アプリが起動したら先ほどの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ダッシュボードで行うメモの記事をベースにしてやってみます。
Node-REDフローはこのようになります。
injectノード
injectノードは文字列を空で送っておきます。
changeノード
実際に送るURLをchangeノードに設定します。上述の通りmsg.urlの設定に先ほどのアプリ起動URLを設定します。
http requestノード(POST)
http requestノードは以前の記事のとおりに設定しておきます。
特に注意すべき点としてはBasic認証にauto-をつけるところでしょう。
実際に動かしてみる。
デプロイしたら早速動かしてみます。
私の場合は同じネットワーク上の別Windows機のNode-REDから発動させました。
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 を!