Category: linux

RaspberryPi で ライン入力・録音

RaspberryPi を使って、PAでまとめられた音声を自動録音したい。

 

 

*必要なもの

USBオーディオインターフェース

他のUSBオーディオインターフェースでも使えると思いますが、手持ちのUSBインターフェースは、上記のものです。

単純にシェルスクリプトを仕込んでおいて、cronで呼び出して録音を開始し、設定時間後に録音停止

 

シェルスクリプト
ファイル名「record_mp3.sh」と想定

———-
#!/bin/sh
SERVER_URL=”http://*****.com//RecordData/”

#録音中表示用赤色LED点灯
echo 23 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio23/direction
echo 1 > /sys/class/gpio/gpio23/value

#USBオーディオデバイスの初期設定
#オーディオデバイスによって要不要がある
#/usr/bin/amixer -c 1 sset  Line Capture cap
#/usr/bin/amixer -c 1 sset  Line Capture  19

#録音データ保存ディレクトリへチェンジ
cd /home/record

#録音ファイル名の文字列を作成
DATE=`date ‘+%Y%m%d%H%M%S’`
FILENAMEMP=”.mp3″
FILENAME=$DATE$FILENAMEMP

#録音開始時のメール文字列作成
DATE_STR=`date ‘+%Y/%m/%d %H:%M:%S’`
MAIL_STR=”\nStart Recording \n”

#録音開始時メール配信
echo $MAIL_STR$DATE_STR |/usr/bin/mail -s “RaspberryPi Start Recording” -aFrom:RaspberryPi@******.com ******@******.com

#録音開始
AUDIODEV=plughw:1,0 rec –buffer 67000 $FILENAME trim 0 $1

#録音終了時、rsyncでサーバーへアップロード
/usr/bin/rsync -avP /home/record/ ******@******.com:/home/www/RecordData/

#録音データのうち、60日以上前の録音データを削除する
find /home/record/ -mtime +60|xargs -i% rm -f %

##録音中表示用赤色LED消灯
echo 0 > /sys/class/gpio/gpio23/value

#録音終了時のメール文字列作成
DATE_STR=`date ‘+%Y/%m/%d %H:%M:%S’`
MAIL_STR=”\nEnd Recording \n”
RECORDING_FILENAME=”\n\n”$SERVER_URL$FILENAME”\n\n”

#録音終了時メール配信
echo $MAIL_STR$DATE_STR$RECORDING_FILENAME |/usr/bin/mail -s “RaspberryPi End Recording” -aFrom:RaspberryPi@******.com ******@******.com

——————–

cron の設定

#recording
# Sunday service
28 10   * * 7 root /usr/local/bin/record_mp3.sh 7200

#Sutday CheckRecording
10 22   * * 6 root /usr/local/bin/record_mp3.sh 10

#Christmas
28 10   25 12 * root /usr/local/bin/record_mp3.sh 7200
58 18   24 12 * root /usr/local/bin/record_mp3.sh 7200
#1.1
28 10   1 1 * root /usr/local/bin/record_mp3.sh 7200

————–

テスト時の様子

テスト時の様子

録音時、LED点灯

録音時、LED点灯

参考にしたサイト

橋本商会
http://shokai.org/blog/archives/7914

Raspberry Piで Audio の録音
http://qiita.com/setsulla/items/c08a6d8fcdddc83c54c5

 

osxからsamba経由でファイルを書き込むと、パーミッションが指定できない。

CentoOS6.5 に sambaが入っています。

そのsambaにosxで接続してファイルを保存しても、パーミッションが644に固定されてしまう。

create maskだの
force create mask
だの
色々と試して見ても変化なし、、、


unix extensions = no
をglobalに追加すればOKということで、追記して再起動したら、設定した値で保存できた。

出典元
http://www.samba.gr.jp/project/translation/3.5/htmldocs/manpages-3/smb.conf.5.html

unix extensions (G)

この真偽値パラメーターは、Samba が HP 社によって定義された CIFS の UNIX拡張を利用するかどうかを制御する。 これらの拡張は、UNIX クライアントから UNIX サーバーに対して接続する際に有用な CIFS を有効にし、 シンボリックリンクやハードリンクなどを利用可能にする。 これらの拡張により、Samba は UNIX の CIFS クライアントに対して、 シンボリックリンクやハードリンクといった機能を提供することが可能となる。

既定値: unix extensions = yes

というわけで、osxからsambaにつないで、かつゴニョゴニョやっている方は、これで解決いたします。

 

CRONの設定方法 /etc/crontab 書式

/etc/crontab の書き方

#毎時0分ごとに実行する

0 * * * * [ユーザー] [コマンド]

#5分おきに実行する

*/5 * * * *  [ユーザー] [コマンド]

#1日1回,0時0分に実行する

0 0 * * * [ユーザー] [コマンド]

#0時から23時ま での2時間おきに,毎23分ごとに実行する

23 0-23/2 * * *[ユーザー] [コマンド]

#1月と12月それぞれの1~20 日,23時0分に実行する

* 23 1-20 1,12 * [ユーザー] [コマンド]

#日曜日から土曜日まで1分おきに実行する

*/1  * * * 0-6 [ユーザー] [コマンド]

#火曜日だけ1分おきに実行する

*/1 * * * 2 [ユーザー] [コマンド]

日時を指定するために指定(ワイルドカード)が5つ並んでいますが,それぞれの意味は次のようになってます。

* * * * * [ユーザー] [コマンド]
1 2 3 4 5

■日時指定方法
左から
何番目 単位   指定方法
1   分    0から59,例:*/15
2   時    0から23,例:0-23
3   日(月) 1から31,例:1-20
4   月    1から12(or names),例:1,6,12
5   日~週 0から6,例:0-6(0の日曜から始まり、6が土曜に対 応する)

rsync 使い方

rsync を使って、差分コピー
rsync -avz source destination
単純にコピーだけならこれで良い。

ちなみにsshを使ったサーバー間の差分コピーも出来る
その1
rsync -avz –password-file=/etc/rsync.password rsync://user@192.168.0.1/source/ /destination/

その2
rsync -avz user@192.168.0.1:/source/ /destination/

-v, –verbose 転送情報を詳しく表示
-q, –quiet 転送情報を表示しない
-c, –checksum 常にチェックサムを行う
-a, –archive アーカイブモード(-rlptgoD オプションと同義)
-r, –recursive ディレクトリで再帰的に実行する
-R, –relative 相対パス名を使う
-b, –backup バックアップを作成する (デフォルトで ~ が付く)
–suffix=SUFFIX バックアップのサフィックスを変更
-u, –update アップデートのみ許可 (上書き禁止)
-l, –links ソフトリンクを維持する
-L, –copy-links ファイルのようにソフトリンクを扱う
–copy-unsafe-links 送信側ツリー外のリンクをコピー
–safe-links 受信側ツリー外のリンクを無視
-H, –hard-links ハードリンクを維持する
-p, –perms パーミッションを維持する
-o, –owner オーナーを維持する (root のみ)
-g, –group グループを維持する
-D, –devices デバイスを維持する (root のみ)
-t, –times タイムスタンプを維持する
-S, –sparse 密度の低いファイルを効率的に扱う
-n, –dry-run 実行時の動作だけを表示
-W, –whole-file rsync アルゴリズムを使わない
-x, –one-file-system 再帰的に実行された時にファイルシステムの境界を横断しない
-B, –block-size=SIZE rsync アルゴリズムのチェックサムブロックサイズの制御(default 700)
-e, –rsh=COMMAND rsh の代替を指定
–rsync-path=PATH リモートのマシーンで rsync のコピーへのパスを指定
-C, –cvs-exclude システム間で転送したくない広範囲のファイルを除外(CVSの方法と同じ)
–delete 送信側にないファイルを削除
–delete-excluded 受信側にある exclud ファイルも削除
–partial 転送途中のファイルを保存します
–force ディレクトリが空でなくても削除
–numeric-ids ユーザとグループの id 番号を転送して、転送後にマッピング
–timeout=TIME IO タイムアウトを設定(秒)
-I, –ignore-times タイムスタンプとファイルサイズのチェックをしない
–size-only タイムスタンプのチェックをしないで、ファイルサイズのチェックだけをする
-T –temp-dir=DIR tmp ファイルのディレクトリを指定
–compare-dest=DIR 受信側のファイルと比較するための追加ディレクトリ
-z, –compress 受信ファイルを圧縮compress file data
–exclude=PATTERN パターン一致するファイルを除外
–exclude-from=FILE ファイルに記述されたパターンと一致するファイルを除外
–include=PATTERN パターン一致するファイルを除外しない
–include-from=FILE ファイルに記述されたパターンと一致するファイルを除外しない
–version rsync のバージョンを表示する
–daemon rsync をデーモンとして走らせる
–config=FILE 別の rsyncd.conf ファイルを指定
–port=PORT 別の rsync ポート番号を指定
–stats rsync アルゴリズムの転送効率を表示
–progress 転送中の情報を表示
–log-format=FORMAT ログフォーマットを指定
–password-file=FILE ファイルからパスワードを得る
-h, –help このヘルプを表示する

WordPress Themes