mediatomb再設定
我が家のPS3はもっぱらDLNA再生マシンです。
先日yum updateしたところ、mediatombも新しく(?)されてしまいました。設定は/etc/sysconfig/に移動してるけれども、設定は/etc/mediatomb/config.xmlを読んでいる模様。いったんsqliteで動作確認とれましたが、この際、MySQLを使うことにしようと思い、ハマりました。
結局、config.xmlで
我が家のPS3はもっぱらDLNA再生マシンです。
先日yum updateしたところ、mediatombも新しく(?)されてしまいました。設定は/etc/sysconfig/に移動してるけれども、設定は/etc/mediatomb/config.xmlを読んでいる模様。いったんsqliteで動作確認とれましたが、この際、MySQLを使うことにしようと思い、ハマりました。
結局、config.xmlで
OSXのTime Machine機能は便利で助けられることしばしなのですが、Time Capsuleはちょっと手を出すのに躊躇する価格だし、もともとsambaサーバーが動いているので、Netatalkで実現できると知って勉強がてらやってみました。
BarkleyDBの最新版をインストール(オラクルのユーザ登録が必要でwgetできない)。Netatalk2.2.1をもってきてconfigureしてmake、make installまではスムーズでした。なお、かっこつけてgitでNetatalk開発版をもってきましたが、makeでエラーのためあっさり断念。
参考ページをみて設定を済ませると、サーバがFinderにはあがってくるのだけど接続できなくて苦闘。iptablesで548を開けていなかったのが原因でした。Lion対応のNetatalk 2.2 で Time Machine サーバーを作る – MacBook Pro – やっぱし山へ行く でハッと気づきました。ありがとうございます(僕も山好きです)。
iptablesは理解不能なので CentOSでポートの開放-歌って踊れる開発者になりたいを参考に簡単に対応。
さて、これでパスワード入力画面までこぎつけましたが、またまた苦戦しましたが、パスワードを間違えていただけでした。
以下、設定ファイルを備忘録的に。
netatalk.conf
#### server (unix) and legacy client (<= Mac OS 9) charsets #ATALK_UNIX_CHARSET='LOCALE' ATALK_UNIX_CHARSET='UTF8' #ATALK_MAC_CHARSET='MAC_ROMAN' ATALK_MAC_CHARSET='MAC_JAPANESE' ....... #### config for cnid_metad. Default log config: #CNID_CONFIG="-l log_note" CNID_CONFIG="-l log_note -f /var/log/netatalk.log"
afpd.conf(sambaもあるのでサーバ名を明記)
"hoge_afp" -uamlist uams_dhx2.so -setuplog "default LOG_INFO /var/log/netatalk.log"
AppleVolumes.default(よそのをそのまま戴き)
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys #~
AppleVolumes.system(ディレクトリの設定はsystemに)
/hoge/TimeMachine/hoge/ "Time Machine Hoge" allow:hoge options:tm /hoge/rec/ "rec"
configureのsummaryも記録。
Configure summary:
Install style:
redhat-sysv
AFP:
Large file support (>2GB) for AFP3: yes
Extended Attributes: ad | sys
CNID:
backends: dbd last tdb
UAMS:
DHX (PAM SHADOW)
DHX2 (PAM SHADOW)
RANDNUM (PAM SHADOW)
passwd (PAM SHADOW)
guest
Options:
DDP (AppleTalk) support: no
SLP support: no
Zeroconf support: yes
tcp wrapper support: yes
quota support: yes
admin group support: yes
valid shell check: yes
cracklib support: no
dropbox kludge: no
force volume uid/gid: no
ACL support: yes
LDAP support: yes
長らく愛用させていただいていたWordPress Related Post for Japanese (関連投稿表示プラグイン)がどうもうまく動作しないため、格闘していましたが、断念し、Yet Another Related Posts Pluginを試しているところです。
あちこちのサイトでは細かい設定ページが表示されているのに、私の設定画面にはでてこないなーと調べていたら、WordPress › Support » [Plugin: Yet Another Related Posts Plugin] where are these settings??という記事を発見しました。「表示オプション」でデフォルトで表示しない設定になっていました。
しかしやっぱり日本語にはWordPress Related Post for Japanese (関連投稿表示プラグイン)のほうがよさそうなので再度チャレンジしてみます。
WordPress Related Post for Japanese (関連投稿表示プラグイン)ですが、WordPressのプラグイン,JRelatedがうまく動かない | Life in Los Alamosを読んで実践してみたところ、見事復活しました。
テーブルは勇み足でdropしてしまっていたのですが、再度テーブルを作ってくれないので手作業で復旧。やっぱりJRelatedは精度がよいです。WordPressのプラグイン,JRelatedがうまく動かない | Life in Los Alamosの記事に大感謝です。
SCP1000+ArduinoをCentOS機(NEC 110ge)にUSB接続してデータを保管、Pachubeとcactiにてグラフ表示させてみました。
当初、cactiでひっそりこっそりデータを確認してたのですが、Pachubeが思ったより簡単だったので、同時にデータを投げるようにしました。今回もいきあたりばったりでDBは使用せず、テキストファイルを使っています。
ガイガーカウンターのときと同じような感じで、データ生成ツール(今回はPerlスクリプト)をcronで回して、テキストで追記。これをPHPで読み取り、cacti用にprintfした後、Pachubeに投げます。
Perlスクリプトは「ねこひげめも|Linux(CentOS)でUSBウェザーボードを使って遊ぶ」を参考にさせて頂きました。参考というか、まるごとパクリです。
追記
どうもSCP1000が返す数字を拾うのに失敗することが多いようで、グラフが歯抜けになってしまうので、ifを2回繰り返して、それでもダメなら空白を返すようにしました。0じゃなく、空白ならグラフも途切れるだけかな。3回待ってまで拾う意味のある数字でもないのでとりあえずこれで。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/usr/bin/perl use strict; open(PORT,"/dev/ttyUSB0") || die "NG!"; my $times = time(); (my $sec,my $min,my $hour,my $mday,my $mon,my $year,my $wday,my $stime) = localtime($times); $year = $year +1900; $mon++; my $datetime=sprintf("%04d-%02d-%02dT%02d:%02d:%02d+09:00", $year,$mon,$mday,$hour,$min,$sec); my $serial = <PORT>; chomp $serial; my @val = split /,/,$serial; if($val[1]<1){ sleep(5); my $serial = <PORT>; chomp $serial; my @val = split /,/,$serial; } my $temp = $val[0]; my $press = $val[1]; chomp $temp; chomp $press; printf("%s,%0.2f,%2.2f\n", $datetime, $press, $temp); close(PORT); |
crontabはこんな感じで。
*/5 * * * * /hoge/scp1000.pl >> /hoge/scp1000tmp.txt
scp1000tmp.txt 2011-09-21T16:00:03+09:00,986.60,28.03 2011-09-21T16:05:03+09:00,986.90,28.03 2011-09-21T16:10:03+09:00,987.05,28.07 2011-09-21T16:15:02+09:00,987.32,28.03
追記2
cronで5分ごとにガイガーカウンターの数値もとっているためか、USBより数値を拾い損ねることが多発し、グラフが歯抜けすぎるので、1分ずらしてみました。
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /hoge/scp1000.pl >> /hoge/scp1000tmp.txt
なお、SCP1000が日光の影響を受けるという動画がありました。気温と連動してるのかと思ってたら陽射しと連動していたのか・・・。これは急いで対策しなければ。
PHPスクリプトはcactiデータ取得用とPachube送信と兼用なのはガイガーカウンターのときと同様です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php require_once('/PachubeAPI.php'); mb_internal_encoding("UTF-8"); $datafile = "/hoge/scp1000tmp.txt"; $t_file = file_get_contents($datafile); //Pachube $api_key = "your_api_key_here"; $feed = '5digit_feed_number'; //put all data into array $rows = explode("\n", $t_file); $cols = explode(",", $t_file); $csv_arr = array_map("str_getcsv", $rows); $row_c = count($csv_arr); //read the last line $last_1time = $csv_arr[$row_c-2][0]; $last_1pres = $csv_arr[$row_c-2][1]; $last_1temp = $csv_arr[$row_c-2][2]; $datetime = $last_1time; $pressure = $last_1pres; $temp = $last_1temp; //print for cacti printf("scppres:%0.2f scptemp:%2.2f", $pressure,$temp); //max and min data for Pachube $press_min = '800'; $press_max = '1050'; $temp_min = '-10'; $temp_max = '50'; //Pachube //id1:Press id2:Temp $json_arr = array( 'version' => '1.0.0', 'datastreams' => array(array('id' => '1', 'at' => $datetime, 'max_value' => $press_max, 'min_value' => $press_min, 'current_value' => $pressure), array('id' => '2', 'at' => $datetime, 'max_value' => $temp_max, 'min_value' => $temp_min, 'current_value' => $temp)) ); $update_data = json_encode($json_arr); $obj = new PachubeAPI($api_key); $obj->updateFeed('json', $feed, $update_data); ?> |
データを引っ張れるようになったストロベリーリナックス社のUSBガイガーカウンタキットをより活用すべく、cactiと同時にPachubeにデータをアップロードするようにしました。
Pachube v2 API Documentationを流し読みしましたが、結局、PHP用のクラスPachubeAPIをみつけ、活用いたしました。ありがとうございます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | //頭に追加 require_once('PachubeAPI.php');//上記本文参照 ..... //Pachube $api_key = 'your_api_key_here';//APIキー $feed = '5_digit_feed_number'; //作成したfeedのURLの末尾の数字 ..... //(略)前の記事参照のこと ..... //最後に追加 //Pachube用データ作成と投稿 //先に取得済みのcpmとusvを四捨五入。 //JSON化するために数値->文字列に $cpm_round = strval(round($cpm, 0)); $usv_round = strval(round($usv, 4)); //json_encode用に配列を作成。idとcurrent_valueを代入。 $json_arr = array( 'version' => '1.0.0', 'datastreams' => array(array('id' => '1', 'current_value' => $cpm_round), array('id' => '2', 'current_value' => $usv_round)) ); //JSON化 $update_data = json_encode($json_arr); //データを投稿 $obj = new PachubeAPI($api_key); $obj->updateFeed('json', $feed, $update_data); |
Pachubeはなんとなく難しそうで敬遠していたのですが、PachubeAPIのおかげで特に新しい勉強をしなくても運用開始できました。改めて感謝です。
&title=Radiation@Himeji, Hyogo(w/ Strawberry Linux USB Geiger Counter)&stroke_size=4&show_axis_labels=true&detailed_grid=true&scale=manual&min=0.08&timezone=Osaka)