この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
よく訓練されたアップル信者、都元です。昨日のエントリーはこちらです。Intel XDKについて基礎知識は、下記を読んでおいてください。
[Edison]Intel XDK IoT Edisonをつかってプログラムのビルドをしてみる
Intel Edison側の内部の動き
上記エントリー内にある通り、XDKは開発マシン内で動くIDEの一種です。一方、Edison内ではxdk-daemonというプロセスが動いており、XDK上で開発したアプリケーションを受け入れ、アプリケーションプロセスを管理する役割を担っています。
Edison内でxdk-whitelist --add xx.xx.xx.xxというコマンドを入力したと思います。このコマンドは、58888番ポートで待ち受けているxdk-daemonに対して接続を許可するIPアドレスを指定するものです。SSH等のようにパスワードや鍵による認証はありませんので、まじめに運用するEdisonに対しては、利用後xdk-whitelist --remove xx.xx.xx.xxで許可を取り除いておく必要がありますね。
ホワイトリストの設定変更を行った後、設定が反映されない場合はsystemctl restart xdk-daemonコマンドで、プロセスを再起動してみましょう。
XDKからアプリケーションを受け取ったり、package.jsonに基づいたライブラリの導入時には、journaldにログが送信されます。ログの確認は、journalctlコマンドで行います。-fオプションを付与すると、tail -fよろしく、標準出力に最新のログを随時出し続けます。ログには様々なプロセスのログが出てくるため、grep "xdk-daemon"でフィルタをしておくといいかもしれません。
# journalctl -f | grep "xdk-daemon"
ホワイトリストへの登録
まず、ホワイトリスト登録を忘れた時。ログにはこんな出力が。
Dec 16 05:38:03 edison-miyamoto-x xdk-daemon[779]: Loading /opt/xdk-daemon/config.json last modified: Tue Sep 23 2014 20:39:34 GMT+0000 (UTC)
Dec 16 05:38:03 edison-miyamoto-x xdk-daemon[779]: UNAUTHORIZED: IP address xx.xx.xx.xx is not in the whitelist (see config.json)
ホワイトリストは/opt/xdk-daemon/config.jsonに記述されるんですね。
# cat /opt/xdk-daemon/config.json
{
"name":"",
"whitelist":[]
}
# xdk-whitelist --add xx.xx.xx.xx
xx.xx.xx.xx added to whitelist!
# cat /opt/xdk-daemon/config.json
{
"name": "",
"whitelist": [
"xx.xx.xx.xx"
]
}
XDKからの接続時
特になんてことありませんが。下記ドロップダウンでデバイスを選択した時の挙動です。
Dec 16 05:45:38 edison-miyamoto-x xdk-daemon[779]: Loading /opt/xdk-daemon/config.json last modified: Tue Dec 16 2014 05:39:46 GMT+0000 (UTC)
Dec 16 05:45:38 edison-miyamoto-x xdk-daemon[779]: clientAddress: xx.xx.xx.xx
npmパッケージのインストール
例えばプロジェクトのpackage.jsonが以下のようになっていた時、aws-sdkがインストールされます。
{
"name": "OnboardLEDBlink",
"description": "",
"version": "0.0.0",
"main": "main.js",
"engines": {
"node": ">=0.10.0"
},
"dependencies": {
"aws-sdk": "*"
}
}
このボタンをクリックすると、パッケージのダウンロードとインストールが行われます。
アプリケーションをEdisonに流し込みつつ、aws-sdk(及びその依存ライブラリ)をインストールしているのが分かります。
Dec 16 05:53:53 edison-miyamoto-x xdk-daemon[779]: received: {"channel":"clean","message":{"type":"fileInfo","data":{"name":"blink","size":2344960,"type":"bundle"}}}
Dec 16 05:53:55 edison-miyamoto-x xdk-daemon[779]: receviing file data
Dec 16 05:53:55 edison-miyamoto-x xdk-daemon[779]: /usr/bin/bsdtar
Dec 16 05:53:55 edison-miyamoto-x xdk-daemon[779]: rebuild /node_app_slot/
Dec 16 05:53:58 edison-miyamoto-x xdk-daemon[779]: stdout: aws-sdk@2.1.2 /node_app_slot/node_modules/aws-sdk
Dec 16 05:53:58 edison-miyamoto-x xdk-daemon[779]: xml2js@0.2.6 /node_app_slot/node_modules/aws-sdk/node_modules/xml2js
Dec 16 05:53:58 edison-miyamoto-x xdk-daemon[779]: sax@0.4.2 /node_app_slot/node_modules/aws-sdk/node_modules/xml2js/node_modules/sax
Dec 16 05:53:58 edison-miyamoto-x xdk-daemon[779]: xmlbuilder@0.4.2 /node_app_slot/node_modules/aws-sdk/node_modules/xmlbuilder
アプリケーションは/node_app_slotに展開されているのが分かります。パッケージのインストールは不要で、単にアプリケーションを/node_app_slotにアップロードするだけであれば、下記のボタンでOKです。
アプリケーションの起動
アップロードしたアプリケーションを起動するにはこのボタンです。
この時起動ログが大量に流れます。また、プログラム内でconsole.log('MRAA Version: ' + mraa.getVersion());等、console.logで出力する内容もここに出てきているのがわかると思います。
Dec 16 05:56:09 edison-miyamoto-x xdk-daemon[779]: received: {"channel":"command","message":"run"}
(略)
Dec 16 05:56:09 edison-miyamoto-x xdk-daemon[779]: V8PORT REC
Dec 16 05:56:09 edison-miyamoto-x xdk-daemon[779]: stdout: MRAA Version: v0.5.4-34-g4d8b82e
アプリケーションの停止
起動したアプリケーションを停止するにはこのボタンです。
この時のログはこんな感じです。
Dec 16 06:00:26 edison-miyamoto-x xdk-daemon[779]: received: {"channel":"command","message":"stop"}
Dec 16 06:00:26 edison-miyamoto-x xdk-daemon[779]: => Stopping App <=
Dec 16 06:00:26 edison-miyamoto-x xdk-daemon[779]: null
Dec 16 06:00:26 edison-miyamoto-x xdk-daemon[779]: child exited
Dec 16 06:00:26 edison-miyamoto-x xdk-daemon[779]: Child process closed
まとめ
XDK(IDE)の操作に対して、Edison上ではこのようなログの出力があります。Edison上のアプリケーションをXDKで開発する時、色々試行錯誤することになると思いますが、このあたりの挙動を押さえておくと、開発がテキパキ進むことでしょう。
明日のエントリーはこちらです。