いんくらyochさんの日記

興味あることの忘備録

Edison定点カメラ

IntelEdisonを使ってアンテナ・カメラにする作業を行った。
まず、Webカムからの画像取得であるが、カメラをUSBポートに接続すると簡単に認識した。

root@edison:~# lsusb
Bus 001 Device 002: ID 046d:0805 Logitech, Inc. Webcam C300
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

画像取得はfswebcamを使うことにして、opkgコマンドでインストールする。

root@edison:~# opkg install fswebcam

root@edison:~# opkg list-installed | grep fswebcam
fswebcam - 20140113-r0

撮影コマンドは以下で行い、画像はRAMディスク(/dev/shm)上に保存するようにした。

root@edison:~# cat fswebcam.conf
skip 15
resolution 1240x1024
scale 640x480
palette YUYV

root@edison:~# /usr/bin/fswebcam -c /home/root/fswebcam.conf /dev/shm/webcam/edison.jpg

撮影を15分おきに実行するようcronに登録した。
次に画像をWebストレージにアップロードする方法だが、当初vsftpをインストールして別のサーバからgetした画像ファイルをアップロードするよう考えたが、node.jsがEdisonには入っているのでこれを使うよう変更した。
node.jsでftpのアップロードをするにはgruntを導入するのが簡単なため、まずgruntをインストールしプロジェクトと称するローカルディレクトリを作成して、npm initコマンドでpackage.jsonを生成する。npm initコマンドで聞かれる問いは適当に入れた。

root@edison:~# npm install -g grunt-cli
root@edison:~# mkdir project
root@edison:~# cd project
root@edison:~/project# npm init

package.jsonを生成したら、grunt本体とftpのモジュールをインストールする。

root@edison:~/project# npm install grunt --save-dev
root@edison:~/project# npm install grunt-ftp-deploy --save-dev

あとはgrunt-ftp-deployのサンプルを使ってアップロードするようファイルを修正する。

root@edison:~/project# cd node_modules/grunt-ftp-deploy
root@edison:~/project/node_modules/grunt-ftp-deploy# npm install
root@edison:~/project/node_modules/grunt-ftp-deploy# vi Gruntfile.js
 host: 'アップロード先URL'
 port: 21
 src: '/dev/shm/webcam/':画像保存場所
 dest: './':アップロード先

あと、./test/.ftpconfigファイル内のftpユーザのアカウントを編集しておく。
これでgruntを実行するとEdisonから直接Webサイトへファイルをアップロードできる。
gruntはgrunt-ftp-deployディレクトリから実行する必要があるので注意する。

root@edison:~/project/node_modules/grunt-ftp-deploy# grunt ftp-deploy
Running "ftp-deploy:build" (ftp-deploy) task
>> FTP upload done!

Done, without errors.

■撮影結果

gruntについては下記サイトが参考になった。
現場で使えるGrunt入門 - Gruntを試そう | CodeGrid

■日のサテライト