アーカイブ

‘自宅サーバ’ カテゴリーのアーカイブ

mediatomb再設定

2011 年 11 月 7 日 コメントはありません

我が家のPS3はもっぱらDLNA再生マシンです。

先日yum updateしたところ、mediatombも新しく(?)されてしまいました。設定は/etc/sysconfig/に移動してるけれども、設定は/etc/mediatomb/config.xmlを読んでいる模様。いったんsqliteで動作確認とれましたが、この際、MySQLを使うことにしようと思い、ハマりました。

結局、config.xmlで hogeという項目を追記していなかったのが原因でした。

カテゴリー: 自宅サーバ タグ:

CentOSにNetatalk2.2.1を入れてTime Machine化

2011 年 10 月 1 日 コメントはありません

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
カテゴリー: MacBook Pro, 自宅サーバ タグ:

関連投稿を表示するプラグイン Yet Another Related Posts Plugin

2011 年 9 月 24 日 コメントはありません

長らく愛用させていただいていた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の記事に大感謝です。

カテゴリー: WordPress, 自宅サーバ タグ:

SCP1000+Arduino+Pachube+cacti

2011 年 9 月 21 日 コメントはありません

気圧をグラフにして残す

SCP1000+ArduinoをCentOS機(NEC 110ge)にUSB接続してデータを保管、Pachubeとcactiにてグラフ表示させてみました。

当初、cactiでひっそりこっそりデータを確認してたのですが、Pachubeが思ったより簡単だったので、同時にデータを投げるようにしました。今回もいきあたりばったりでDBは使用せず、テキストファイルを使っています。

USBデバイスからのデータを読み込む

ガイガーカウンターのときと同じような感じで、データ生成ツール(今回は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が日光の影響を受けるという動画がありました。気温と連動してるのかと思ってたら陽射しと連動していたのか・・・。これは急いで対策しなければ。

cactiとPachubeへ送信

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);
 
?>
カテゴリー: プログラミング, 自宅サーバ タグ:

PHP + PachubeAPIでPachubeにデータを投げる

2011 年 9 月 17 日 コメントはありません

Pachube(パッチベイ)に挑戦

データを引っ張れるようになったストロベリーリナックス社のUSBガイガーカウンタキットをより活用すべく、cactiと同時にPachubeにデータをアップロードするようにしました。

PHPでデータを送信する

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のおかげで特に新しい勉強をしなくても運用開始できました。改めて感謝です。

Pachubeから動的画像出力

カテゴリー: プログラミング, 自宅サーバ タグ: