Amazon dash buttonでmotionのオンオフ
動機
以前頂いたVostro 1540の使い道をこれまで色々と試行錯誤した結果、自宅内のLANを用いた様々な用途でのサーバーとして稼働させるという方向性で落ち着いた。最近はその用途の一つとして、motionという動体検知ユーティリティツールを用いた自宅内の監視カメラを一任させてみている。実際のカメラは自宅の中心部分に堂々と置いてある。自宅全体を監視するためだ。しかしそのために、普通にカメラの目の前を私が生活の中でよく通りまくるので、その度に一々動体検知されて、録画を開始してしまう。これは動体検知のレベルの調節で解決できるわけではない。監視カメラとしての役割と果たして欲しいタイミングというのは、誰も自宅にいない時のみである。そこで、玄関あたりに今流行りのAmazon dash buttonを設置して、そこからmotionのプロセスを開始させたり殺したりできれば、無駄な稼働を省く事ができるはずである。
まとめ
題名はmotionのオンオフとなっているが、本質的にやっている事は単に同LAN上に存在するマシンに対して、ボタンを押下した場合に特定のコマンドを実行するという事だけである。
環境
- Vostro 1540
- Ubuntu 16.04 LTS
- motion 3.2.12
- node.js 7.4.0
- Logicool C270
作業
まずnode.jsを導入
$ sudo apt-get install -y nodejs npm $ sudo npm cache clean $ sudo npm install n -g $ sudo n stable $ sudo ln -sf /usr/local/bin/node /usr/bin/node $ sudo apt-get purge -y nodejs npm
作業ディレクトリを生成してその中でプロジェクトの生成。例の如くdash-buttonを使う。
$ mkdir camera_motion_project && cd camera_motion_project $ sudo apt-get install libpcap-dev $ npm init $ npm install --save dash-button jxa slack-node
package.jsonの"script"を以下のように変更する。
{ "scripts": { "scan": "dash-button scan" } }
Amazon dash buttonのMACアドレスを取得する。
$ sudo npm run scan
とし、セットアップ済みのamazon dash buttonを押下するとMACアドレスが出力される。あとは dash-buttonにある通りjsファイルを記述すれば良い。
動作
それにしても、便利な時代になったものだ。Amazon dash buttonをmotionプロセスのオンオフボタンに。二番煎じネタ。 pic.twitter.com/Vyploas4Kd
— roκi (@530506) January 9, 2017
追記
dash buttonを押してからしっかりとオンオフがされているかは、ログを目視しなければ確認出来ず、不自由に感じたため、音声でオンオフの処理を流す事にした。また、オンの時にmotion.conf
から任意の設定を読み込んでそれを読み上げさせる事にした。読み上げには、まず標準出力にmotion.conf
の任意の内容を出力させて、それをespeakというソフトウェアの引数にする事にした。
よってまずは、espeakを入手しなければならない。
$ sudo apt-get install espeak
そして、任意の設定内容を標準出力させる。
これで、dash buttonのオンオフと共に、その旨の音声と、起動時には設定内容の一部(任意)が読み上げられるようになった。
オンオフで喋らせることにした。起動時には起動の旨とmotion.confの任意の設定値を読み上げる。お家ハックは息抜きに良い。 pic.twitter.com/tHD1SJc1jd
— roκi (@530506) 2017年1月12日