LoginSignup
2
9

More than 5 years have passed since last update.

Raspberry PiでIoTする時に便利なコマンド(自動化編)

Last updated at Posted at 2017-08-15

定時実行

cron

USBカメラの画像を定期的にサーバにアップロードするために使用
簡易的な監視カメラが簡単にできます。(サーバまでのセキュリティはsshで確保、観覧のためのセキュリティは別途考えてください。)
crontabの設定はこんな感じ

motionで拾ったカメラ画像のlatestのファイル名を1個だけ拾って1分置きにscpでサーバの/tmp/test.jpgとしてアップロードする

* * * * * ls -1t /tmp/motion/*.jpg | head -1 | xargs -i scp -i ~/.ssh/privatekey -P 22 {} user@domain:/tmp/test.jpg

上記同様だが10秒置きに実行したい場合

* * * * * for i in `seq 0 10 59`;do (sleep ${i}; ls -1t /tmp/motion/*.jpg | head -1 | xargs -i scp -i ~/.ssh/privatekey -P 22 {} user@domain:/tmp/test.jpg) & done;

ちなみにmotionはデフォルトでlastsnap.jpgというシンボリックリンクを/tmp/motionに置いてくれるので、下記で良いことがわかった

* * * * * for i in `seq 0 10 59`;do (sleep ${i}; scp -i ~/.ssh/privatekey -P 22 /tmp/motion/lastsnap.jpg  user@domain:/tmp/lastsnap.jpg) & done;

コマンド自動応答

expect

ラズパイからiRemocon Wi-Fiを制御しようと思った時に使用
iRemocon Wi-Fiは有線または無線LAN経由でのSocket通信によりデータを送受信します。そのため、コマンド送出→レスポンス受信→次のコマンド送出→レスポンス受信というシーケンスを繰り返すことになるため、ラズパイから制御する場合、expectが便利と判断しました。
ちなみに、iRemoconを有線LANで直接ラズパイに接続する場合は、ラズパイ側がDHCPサーバになる必要があります。

トリガ実行

incron

inotifyをcron風にして使いやすくした印象。
ファイルが置かれたあるいは更新された、削除されたことを契機にコマンドを実行できます。
motionによるカメラ画像もcronではなくこちらでも可能と思われます。
詳細の例は事情が有り書けないので上記キーワードで検索してみてください。

起動時コマンド実行・常駐化

/etc/rc.local

rootで実行したい場合。gpioの制御など何にも考えなくて済む(と書いた後で調べたら最近のRaspbianはpiユーザでもgpioアクセス可能らしい)。一番簡単だけどセキュアじゃない方法。

systemdに登録

Linuxの正統派。ちょっとめんどくさい。きちんとライフサイクルを考える必要あり。

プロセスが死んでも再起動してくれるようにする

forever

node.jsを使うときによく出てくるようだけど、それ以外でも利用可能(なはず)

upstart

使ったことないけど設定が簡単そうです。

2
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
9