<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>望遠鏡ドットコム</title>
	<atom:link href="http://www.boenkyo.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.boenkyo.com</link>
	<description>「望遠鏡」って言葉の響きがね。</description>
	<lastBuildDate>Sun, 29 Jan 2012 02:30:50 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/feed" />
		<item>
		<title>部屋干し用にヒルズ・コードマチックを購入</title>
		<link>http://www.boenkyo.com/archives/1534</link>
		<comments>http://www.boenkyo.com/archives/1534#comments</comments>
		<pubDate>Sun, 29 Jan 2012 02:30:50 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1534</guid>
		<description><![CDATA[部屋干し用機器があるのを知った 部屋干しなんてスタンド型か部屋に紐を張るくらいのイメージだったのですが、ワイヤー巻き取り式で手軽な価格のものを見つけたので購入してみました。「【楽天市場】【送料無料★受付中】洗濯物干し 室 [...]]]></description>
			<content:encoded><![CDATA[<h4>部屋干し用機器があるのを知った</h4>
<p>部屋干しなんてスタンド型か部屋に紐を張るくらいのイメージだったのですが、ワイヤー巻き取り式で手軽な価格のものを見つけたので購入してみました。「<a href="http://hb.afl.rakuten.co.jp/hgc/0f1c4a14.c14e9296.0f1c4a15.6cb1821b/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fm-worldplus%2f10000016%2f%3fscid%3daf_ich_link_txt&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fm-worldplus%2fi%2f10000016%2f" target="_blank">【楽天市場】【送料無料★受付中】洗濯物干し 室内物干し ロープ ⇒ヒルズ &#8220;コードマチック&#8221;【YDKG】：物干し専門店 エムワールドプラス</a>」という商品を選択しました。</p>
<p>販売店のウェブサイトでは</p>
<blockquote><p>コードマチックの特徴</p>
<ul>
<li>壁に取り付けて使用する自動巻き取り式洗濯物干しライン</li>
<li>金属ワイヤタイプと異なり、直接かけても生地を傷めません</li>
<li>室内屋外を問わずどこでも簡単取り付け出来ます</li>
<li>使い終わればラインが本体に巻き取られ急な来客も安心です</li>
<li>本体に全長15ｍのラインを収納しているので使い方いろいろ</li>
<li>ラインの張り具合も簡単に調節できます</li>
<li>本体・ラインとも丈夫な製品です</li>
</ul>
<p>製品の仕様</p>
<ul>
<li>W170☓H150☓D47mm</li>
<li>重量　540g</li>
</ul>
</blockquote>
<p>とあります。レピューも好意的なものが多く期待が持てます。</p>
<h4>商品到着。開梱。</h4>
<p><a href="http://www.boenkyo.com/wp-content/uploads/IMG_2904.jpg"><img src="http://www.boenkyo.com/wp-content/uploads/IMG_2904-225x300.jpg" alt="コードマチックパッケージ" title="コードマチックパッケージ" width="225" height="300" class="alignnone size-medium wp-image-1535" /></a></p>
<p>&nbsp;</p>
<p>パッケージはシンプル。箱はそんなにでかくない。しかし。。。</p>
<p>&nbsp;</p>
<p><a href="http://www.boenkyo.com/wp-content/uploads/IMG_2905.jpg"><img src="http://www.boenkyo.com/wp-content/uploads/IMG_2905-225x300.jpg" alt="コードマチック開梱" title="コードマチック開梱" width="225" height="300" class="alignnone size-medium wp-image-1537" /></a></p>
<p>iPhoneと比べてみると大きさがよく分かるけど、でかく分厚い。添付品はオリジナルの英文マニュアル、販売店の和文マニュアル1枚、ネジ2本、フック1本、レンガ用プラグ3本です。英文マニュアルは大した内容がありませんし、和文マニュアルも間柱の探し方が片面、取り付け方法、取り扱い方法がもう片面にまとめてあるだけです。でも、英語が読めない人には役立つと思います。</p>
<h4>さっそく取り付け</h4>
<p>まず、取説通りに間柱を探しますが、自宅はリフォームの際に壁をどうやったのか記憶になく、いくら探してもネジ頭が見つかりません。仕方なく、ドライバの柄で壁をコツコツ叩いていき、音でそれらしき箇所を発見。ちょうど、液晶プロジェクタの下の場所が空いてて、音も硬かったので設置場所に選定。</p>
<p>本体を壁に当て、鉛筆で上の穴の位置を壁に記し、電動インパクトドライバでネジをまずは1本固定。インパクトがバキバキ鳴っててネジがよく効いてるようで安心。このネジは最後まで締め込まず、数ミリ残しておきます。それから本体の上の方の穴をこのネジにかけ、iPhoneの<a href="http://click.linksynergy.com/fs-bin/stat?id=3sMZNbgHGD0&#038;offerid=94348&#038;type=3&#038;subid=0&#038;tmpid=2192&#038;RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252F%252Fid293621500%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30" target="itunes_store"><img src="http://ax.phobos.apple.com.edgesuite.net/ja_jp/images/web/linkmaker/badge_appstore-sm.gif" alt="iHandy カーペンター (iHandy Carpenter) - iHandySoft Inc." style="border: 0;"/>水準器アプリ</a>で確認しつつ、下の穴の位置を鉛筆でマーク。またまた電動インパクトドライバでネジを締め込みます。最後に上の穴のネジも締め込み、完了。</p>
<p>問題はフックの方の取り付けです。単なるヒートンなので、電動器具が使えず人力なのがしんどい。まず、本体からラインの向きを考えて、灯油ストーブの上にかからなく、かつ、エアコンの風がよくあたり、かつ、あまり邪魔にならないような場所・・・なんてないですけども、よさそうな場所でなおかつ、壁の裏にしっかりとした木がある箇所を選定します。また、本体の取付位置と水平位置をあわせておかないと、ワイヤーが滑り台状態になってしまうので、メジャーで天井からの高さを測って鉛筆でマーク。</p>
<p>当初、人力でフックを止めようとしたのですが、このフックの先端が木ねじ仕様ではないため、石膏ボードの後ろのコンパネに食いついてくれません。そこで細めの木ねじを電動インパクトドライバで軽く(フックをねじ込むときにバカにならない程度に)締め込んでから、取り外し、再度人力でトライしたところ、グイグイとねじ込むことができました。</p>
<h4>使ってみた</h4>
<p>さて、昨日は日中出かけていたため、選択を夕方にしたため、必然的に室内干しになりました。さっそく、ワイヤーを伸ばし、本体下の巻き込み固定部にワイヤを巻きつけて固定。でもそれくらいだとまだまだたるんでいるので、ワイヤーを引きつつ、固定部をずらし、、、を繰り返してなんとかピーンと張ることが出来ました。</p>
<p>さっそく洗濯物をかけていきますが、最初は届かなかったのに、みるみるとワイヤーが下がってきて、中央部は頭が引っかかるくらいになってしまいました。ワイヤーの初期伸びもあるだろうし、しばらく様子をみてみましょう。本体下の引っ掛けがなかなかコツがいるので慣れも必要でしょう。</p>
<p>なお、ワイヤーのフックはスプリング状になっていて、洗濯物をかけたときに、壁側フックおよび本体固定部に負荷がかかりにくいような工夫もされています。使用前に念のためにワイヤーを拭いてみましたが、何も汚れがつくことがなく、清潔な状態でした。なお、ワイヤは直径約3mm。ナイロン繊維(?)をビニールコーティングしたものです。</p>
<p>部屋干しでも位置が高いと乾燥しやすくとても役立ちそうな感じです。</p>
<p><a href="http://hb.afl.rakuten.co.jp/hgc/0f1c4a14.c14e9296.0f1c4a15.6cb1821b/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fm-worldplus%2f10000016%2f%3fscid%3daf_ich_link_txt&#038;m=http%3a%2f%2fm.rakuten.co.jp%2fm-worldplus%2fi%2f10000016%2f" target="_blank">15mのラインでマンション・ベランダにも最適♪欧米の洗濯物干しロープ・定番モデルだから1年中&#8230;</a><br />
<a href="http://hb.afl.rakuten.co.jp/hgc/0f1c4a14.c14e9296.0f1c4a15.6cb1821b/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fm-worldplus%2f10000016%2f%3fscid%3daf_ich_link_img&#038;m=http%3a%2f%2fm.rakuten.co.jp%2fm-worldplus%2fi%2f10000016%2f" target="_blank"><img src ="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fm-worldplus%2fcabinet%2f01196262%2f01698861%2fimg57044873.gif%3f_ex%3d400x400&#038;m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fm-worldplus%2fcabinet%2f01196262%2f01698861%2fimg57044873.gif%3f_ex%3d80x80" border="0"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1534/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1534" />
	</item>
		<item>
		<title>mediatomb再設定</title>
		<link>http://www.boenkyo.com/archives/1521</link>
		<comments>http://www.boenkyo.com/archives/1521#comments</comments>
		<pubDate>Mon, 07 Nov 2011 08:59:26 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1521</guid>
		<description><![CDATA[我が家のPS3はもっぱらDLNA再生マシンです。 先日yum updateしたところ、mediatombも新しく(?)されてしまいました。設定は/etc/sysconfig/に移動してるけれども、設定は/etc/medi [...]]]></description>
			<content:encoded><![CDATA[<p>我が家のPS3はもっぱらDLNA再生マシンです。</p>
<p>先日yum updateしたところ、mediatombも新しく(?)されてしまいました。設定は/etc/sysconfig/に移動してるけれども、設定は/etc/mediatomb/config.xmlを読んでいる模様。いったんsqliteで動作確認とれましたが、この際、MySQLを使うことにしようと思い、ハマりました。</p>
<p>結局、config.xmlで
<password>hoge</password>という項目を追記していなかったのが原因でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1521/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1521" />
	</item>
		<item>
		<title>ウォッシュレットDIY交換してみました。TOTO KVシリーズ TCF426SC1</title>
		<link>http://www.boenkyo.com/archives/1510</link>
		<comments>http://www.boenkyo.com/archives/1510#comments</comments>
		<pubDate>Tue, 11 Oct 2011 08:32:03 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[DIY]]></category>
		<category><![CDATA[買い物]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1510</guid>
		<description><![CDATA[故障 先週の朝、突然自宅トイレのウォシュレット(正確には松下電工製なのでウォシュレットじゃないですけど)が動作しなくなってしまいました。直前までは動いていたのに。昔はウォシュレットって高価でしたが、現在の価格を調べてみる [...]]]></description>
			<content:encoded><![CDATA[<h4>故障</h4>
<p>先週の朝、突然自宅トイレのウォシュレット(正確には松下電工製なのでウォシュレットじゃないですけど)が動作しなくなってしまいました。直前までは動いていたのに。昔はウォシュレットって高価でしたが、現在の価格を調べてみると、1万円台から購入可能です。ちょうど10年経過しており、メーカー出張だと1万円はくだらないだろうし、その後、他の箇所が故障する可能性を考えると更新時期だと考え、新品交換を検討しました。</p>
<h4>製品検討</h4>
<p>以前より買い替え時にはTOTOにしようと決めていました。楽天含めネットで検索していたのですが、便座なのになぜかAmazonでも取り扱いがあります。本屋で便座を買うなんてすごい時代到来だ。</p>
<p>そんなわけで慌てて<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0017XD8C6/herbalgardens-22/ref=nosim/" name="amazletlink" target="_blank">TOTO  ウォシュレットKV2 TCF426SC1 パステルアイボリー</a>を注文したものの、自宅に帰ってから便器の色がホワイトだったことに気づきました。うーん、しかしなぜかアイボリーのほうが安いし、白熱色での照明なので大差ないだろう。</p>
<p>プライム会員ですので、翌日には到着しました。予め、便座を外しての清掃は済ませておきました。</p>
<p><strong>メーカーのカタログページ</strong>(PDFです)<br />
<a href="http://www.toto.co.jp/products/toilet/wl_k/kv.pdf">www.toto.co.jp/products/toilet/wl_k/kv.pdf</a></p>
<h4>説明書熟読</h4>
<p>交換に先立ち、取付説明書を熟読するのですが、文章が難解というか、まったくの初心者を対象にしていないのか、理解しづらくて参りました。結果的には分岐栓を専用のに変更する必要がありました。ワンタッチ接栓なんて共通にしておいてくれればよいのに。</p>
<h4>必要な道具</h4>
<p>モンキーレンチ、マイナスドライバー(栓の開閉)、プラスドライバー(便座固定具取付用)は必須およびバケツ・洗面器・ゴミ箱など水を受けるもの、以上は必須です。これに加えて、梱包の袋を開けるためのカッターもしくはハサミがあれば楽。また、レジャーシートなどを敷いておくと工具で床面にキズがつくのを防げますし、水が跳ねたときにもいいかも。便座固定具のネジはかなりの回数回しますので、電動ドライバーがあると楽です。</p>
<h4>作業手順</h4>
<p>まず、バケツ等元栓を閉じ、念のために、そばの洗面所の蛇口も全開にしておきました。万が一の際にはこちらから圧力が漏れてくれるはず。次にタンクの水を流して、排出しておきます。配管内の圧力抜きが目的らしい。そして、マイナスドライバーで分岐栓を閉鎖します。我が家の場合、二重になってる複雑なタイプだったのですが、押し込みながら回すと閉栓できました。</p>
<p>現状ウォシュレットの配管側の接栓を外します。これは固定クリップ付きワンタッチであったり、コネクタ部を90度回転させなければ外せなかったり色々だと思います。配管の中には水が残ってますし、分岐栓ないからも水がたれてきますので、バケツなどで水を受けながら接栓を外すようにします。</p>
<p>次に新しい分岐栓を取り付けます。内側の部品を止まるまで配管にねじ込み、その後、外側の部品をねじ込みます。あんまりめちゃくちゃなトルクをかけないほうがよいのではないかと思います。</p>
<p>現状の便座を外します。外し方は現状便座の取説に載ってますが、我が家の松下電工製の場合、便座裏側から固定ナットを手で回してゆるめ、便座の固定を解いて便座を手前に引いて外します。自宅の別のトイレのTOTO暖房便座の場合、専用工具(今回のウォシュレットに付属)で同じく裏側から緩める構造。外した配管には栓をしておくと安心です。邪魔なので、旧便座はトイレから取り出してしまいます。</p>
<p>新便座を設置するために、固定部品を取り付けます。テンプレートが付いているので簡単にセットできます。プラスドライバーでひたすら回して固定するのですが、説明書にある通り、ほんとにいつまで回すのかというくらいに回します。こんなことなら電動ドライバーを持ち込んでおけばよかったです。</p>
<p>便座を固定してしまう前に、給水管を便座に取り付けます。付属のレンチをモンキーレンチで締めますが、ここもあんまり気合いを入れないほうがよいのではないかと思います。</p>
<p>つぎに便座を固定部品にはめ込みます。配管を分岐栓に取り付けますが、取り付け後は回転部を90度回しておくと不意に外れることを防げます。元栓を開栓後、恐る恐る分岐栓を開けると圧力で配管が動くのでちょっと焦ります。</p>
<p>漏れがなければ、あとはコンセントにアース線を固定し、電源プラグを挿し込めば完了です。</p>
<p>文章にすると長いですが、実際には半時間ほどで終わりました。</p>
<h4>使用感</h4>
<p>さすがに10年前の松下のモデルと比べるとおしりの感じもよろしいです。座っているかどうかの感知も赤外線か何かのセンサーを使っていて機械式スイッチではないのが好ましいです。</p>
<p>リモコンなんて不要だと思ってたのですが、以前、首痛のときにボタンの位置がわからなくて苦労したことを思い出しました。本体のスイッチ類が減少するっていうのはメンテナンス性もよいのではないかと期待。</p>
<p>タンク式でないのはトイレが広く見えるし、掃除もしやすくて良い感じです。</p>
<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0017XD8C6/herbalgardens-22/ref=nosim/" name="amazletlink" target="_blank">TOTO  ウォシュレットKV2 TCF426SC1 パステルアイボリー</a><br />
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B0017XD8C6/herbalgardens-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/31u0qQooa5L._SL160_.jpg" alt="TOTO  ウォシュレットKV2 TCF426SC1 パステルアイボリー" style="border: none;" /></a><br />
(楽天は値上がり＆納期延期の模様。<a href="http://hb.afl.rakuten.co.jp/hgc/0e960e07.b07688d6.0e960e08.34e9d592/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fec-current%2f4940577904928%2f%3fscid%3daf_ich_link_txt&#038;m=http%3a%2f%2fm.rakuten.co.jp%2fec-current%2fi%2f10068678%2f" target="_blank">TOTO TCF426-SC1(パステルアイボリー) </a>のリンクが楽天になります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1510/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1510" />
	</item>
		<item>
		<title>CentOSにNetatalk2.2.1を入れてTime Machine化</title>
		<link>http://www.boenkyo.com/archives/1484</link>
		<comments>http://www.boenkyo.com/archives/1484#comments</comments>
		<pubDate>Sat, 01 Oct 2011 08:33:55 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[MacBook Pro]]></category>
		<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1484</guid>
		<description><![CDATA[OSXのTime Machine機能は便利で助けられることしばしなのですが、Time Capsuleはちょっと手を出すのに躊躇する価格だし、もともとsambaサーバーが動いているので、Netatalkで実現できると知って [...]]]></description>
			<content:encoded><![CDATA[<p>OSXのTime Machine機能は便利で助けられることしばしなのですが、Time Capsuleはちょっと手を出すのに躊躇する価格だし、もともとsambaサーバーが動いているので、Netatalkで実現できると知って勉強がてらやってみました。</p>
<h4>参考になったページ</h4>
<ul>
<li><a href="http://hatx.blog.so-net.ne.jp/netatalk_status">netatalk 2.2.1 リリース：HAT blog</a>
</li>
<li><a href="http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html">Netatalk and Samba</a></li>
<li><a href="http://d.hatena.ne.jp/paraches/20110912">CentOS 5.6に netatalk 2.2.1を入れるのが大変だった… &#8211; Debian GNU/Linux 3.1 on PowerMac G4</a></li>
<li><a href="http://rewse.jp/blog/p/3569">Mac OS X Lion 対応 Time Machine サーバー構築 | 複眼中心</a></li>
<li><a href="http://weboo-returns.com/blog/os-x-lion-linux-time-machine/">OS X Lion から Linuxサーバに Time Machine バックアップ | Weboo! Returns.</a></li>
<li><a href="http://www.hattory.com/doc/manual/user_guide/user_guide/netatalkshare.html">共有ディレクトリの設定</a></li>
</ul>
<h4>インストール</h4>
<p>BarkleyDBの最新版をインストール(オラクルのユーザ登録が必要でwgetできない)。Netatalk2.2.1をもってきてconfigureしてmake、make installまではスムーズでした。なお、かっこつけてgitでNetatalk開発版をもってきましたが、makeでエラーのためあっさり断念。</p>
<h4>設定</h4>
<p>参考ページをみて設定を済ませると、サーバがFinderにはあがってくるのだけど接続できなくて苦闘。iptablesで548を開けていなかったのが原因でした。<a href="http://penguin-web.dyndns.org/mountain/blogs/312">Lion対応のNetatalk 2.2 で Time Machine サーバーを作る &#8211; MacBook Pro &#8211; やっぱし山へ行く</a> でハッと気づきました。ありがとうございます(僕も山好きです)。</p>
<p>iptablesは理解不能なので<a href="http://sakidroid.blog38.fc2.com/blog-entry-17.html">　 CentOSでポートの開放-歌って踊れる開発者になりたい</a>を参考に簡単に対応。</p>
<p>さて、これでパスワード入力画面までこぎつけましたが、またまた苦戦しましたが、パスワードを間違えていただけでした。</p>
<p>以下、設定ファイルを備忘録的に。</p>
<p>netatalk.conf</p>
<pre>
#### 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"
</pre>
<p>afpd.conf(sambaもあるのでサーバ名を明記)</p>
<pre>
"hoge_afp" -uamlist uams_dhx2.so -setuplog "default LOG_INFO /var/log/netatalk.log"
</pre>
<p>AppleVolumes.default(よそのをそのまま戴き)</p>
<pre>
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys
#~
</pre>
<p>AppleVolumes.system(ディレクトリの設定はsystemに)</p>
<pre>
/hoge/TimeMachine/hoge/ "Time Machine Hoge" allow:hoge options:tm
/hoge/rec/ "rec"
</pre>
<p>configureのsummaryも記録。</p>
<pre>
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
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1484/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1484" />
	</item>
		<item>
		<title>関連投稿を表示するプラグイン Yet Another Related Posts Plugin</title>
		<link>http://www.boenkyo.com/archives/1479</link>
		<comments>http://www.boenkyo.com/archives/1479#comments</comments>
		<pubDate>Sat, 24 Sep 2011 08:09:29 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1479</guid>
		<description><![CDATA[長らく愛用させていただいていたWordPress Related Post for Japanese (関連投稿表示プラグイン)がどうもうまく動作しないため、格闘していましたが、断念し、Yet Another Relat [...]]]></description>
			<content:encoded><![CDATA[<p>長らく愛用させていただいていた<a href="http://wppluginsj.sourceforge.jp/wp-jrelated/">WordPress Related Post for Japanese (関連投稿表示プラグイン)</a>がどうもうまく動作しないため、格闘していましたが、断念し、<a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/">Yet Another Related Posts Plugin</a>を試しているところです。</p>
<p>あちこちのサイトでは細かい設定ページが表示されているのに、私の設定画面にはでてこないなーと調べていたら、<a href="http://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-where-are-these-settings">WordPress › Support » [Plugin: Yet Another Related Posts Plugin] where are these settings??</a>という記事を発見しました。「表示オプション」でデフォルトで表示しない設定になっていました。</p>
<p>しかしやっぱり日本語には<a href="http://wppluginsj.sourceforge.jp/wp-jrelated/">WordPress Related Post for Japanese (関連投稿表示プラグイン)</a>のほうがよさそうなので再度チャレンジしてみます。</p>
<h4>追記</h4>
<p><a href="http://wppluginsj.sourceforge.jp/wp-jrelated/">WordPress Related Post for Japanese (関連投稿表示プラグイン)</a>ですが、<a href="http://www.aspenmesa.com/blog/3261">WordPressのプラグイン，JRelatedがうまく動かない | Life in Los Alamos</a>を読んで実践してみたところ、見事復活しました。</p>
<p>テーブルは勇み足でdropしてしまっていたのですが、再度テーブルを作ってくれないので手作業で復旧。やっぱりJRelatedは精度がよいです。<a href="http://www.aspenmesa.com/blog/3261">WordPressのプラグイン，JRelatedがうまく動かない | Life in Los Alamos</a>の記事に大感謝です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1479/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1479" />
	</item>
		<item>
		<title>SCP1000+Arduino+Pachube+cacti</title>
		<link>http://www.boenkyo.com/archives/1438</link>
		<comments>http://www.boenkyo.com/archives/1438#comments</comments>
		<pubDate>Wed, 21 Sep 2011 07:49:51 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1438</guid>
		<description><![CDATA[気圧をグラフにして残す SCP1000+ArduinoをCentOS機(NEC 110ge)にUSB接続してデータを保管、Pachubeとcactiにてグラフ表示させてみました。 当初、cactiでひっそりこっそりデータ [...]]]></description>
			<content:encoded><![CDATA[<h4>気圧をグラフにして残す</h4>
<p>SCP1000+ArduinoをCentOS機(NEC 110ge)にUSB接続してデータを保管、<a href="http://pachube.com/">Pachube</a>とcactiにてグラフ表示させてみました。</p>
<p>当初、cactiでひっそりこっそりデータを確認してたのですが、Pachubeが思ったより簡単だったので、同時にデータを投げるようにしました。今回もいきあたりばったりでDBは使用せず、テキストファイルを使っています。</p>
<h4>USBデバイスからのデータを読み込む</h4>
<p><a href="http://www.boenkyo.com/archives/1414" title="PHP + PachubeAPIでPachubeにデータを投げる">ガイガーカウンターのときと同じような感じで</a>、データ生成ツール(今回はPerlスクリプト)をcronで回して、テキストで追記。これをPHPで読み取り、cacti用にprintfした後、Pachubeに投げます。</p>
<p>Perlスクリプトは「<a href="http://nekohigeweb.dyndns.org/memo/weather/usbweather.php">ねこひげめも｜Linux(CentOS)でUSBウェザーボードを使って遊ぶ</a>」を参考にさせて頂きました。参考というか、まるごとパクリです。</p>
<p><strong>追記</strong><br />
どうもSCP1000が返す数字を拾うのに失敗することが多いようで、グラフが歯抜けになってしまうので、ifを2回繰り返して、それでもダメなら空白を返すようにしました。0じゃなく、空白ならグラフも途切れるだけかな。3回待ってまで拾う意味のある数字でもないのでとりあえずこれで。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>PORT<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;/dev/ttyUSB0&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;NG!&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$times</span> <span style="color: #339933;">=</span> <span style="color: #000066;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#40;</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sec</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mday</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$mon</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$year</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$wday</span><span style="color: #339933;">,</span><span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$stime</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">localtime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$times</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$year</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$year</span> <span style="color: #339933;">+</span><span style="color: #cc66cc;">1900</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$mon</span><span style="color: #339933;">++;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$datetime</span><span style="color: #339933;">=</span><span style="color: #000066;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%04d-%02d-%02dT%02d:%02d:%02d+09:00&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$year</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$mon</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$mday</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$hour</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$min</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$sec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #009999;">&lt;PORT&gt;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">chomp</span> <span style="color: #0000ff;">$serial</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@val</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009966; font-style: italic;">/,/</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$serial</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$val</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$serial</span> <span style="color: #339933;">=</span> <span style="color: #009999;">&lt;PORT&gt;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">chomp</span> <span style="color: #0000ff;">$serial</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@val</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span> <span style="color: #009966; font-style: italic;">/,/</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$serial</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$temp</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$val</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$press</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$val</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">chomp</span> <span style="color: #0000ff;">$temp</span><span style="color: #339933;">;</span>
<span style="color: #000066;">chomp</span> <span style="color: #0000ff;">$press</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s,%0.2f,%2.2f<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$datetime</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$press</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$temp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span>PORT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>定期実行させる</h4>
<p>crontabはこんな感じで。</p>
<pre>
*/5 * * * * /hoge/scp1000.pl >> /hoge/scp1000tmp.txt
</pre>
<pre>
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
</pre>
<p><strong>追記2</strong><br />
cronで5分ごとにガイガーカウンターの数値もとっているためか、USBより数値を拾い損ねることが多発し、グラフが歯抜けすぎるので、1分ずらしてみました。</p>
<pre>
1,6,11,16,21,26,31,36,41,46,51,56 * * * * /hoge/scp1000.pl >> /hoge/scp1000tmp.txt
</pre>
<p>なお、SCP1000が日光の影響を受けるという動画がありました。気温と連動してるのかと思ってたら陽射しと連動していたのか・・・。これは急いで対策しなければ。</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/0FNeIHFbaxw" frameborder="0" allowfullscreen></iframe></p>
<h4>cactiとPachubeへ送信</h4>
<p>PHPスクリプトはcactiデータ取得用とPachube送信と兼用なのは<a href="http://www.boenkyo.com/archives/1414" title="PHP + PachubeAPIでPachubeにデータを投げる">ガイガーカウンターのときと同様です</a>。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/PachubeAPI.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mb_internal_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$datafile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/hoge/scp1000tmp.txt&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$t_file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$datafile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Pachube</span>
<span style="color: #000088;">$api_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;your_api_key_here&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'5digit_feed_number'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//put all data into array</span>
<span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$t_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cols</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$t_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$csv_arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_map</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;str_getcsv&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$row_c</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//read the last line</span>
<span style="color: #000088;">$last_1time</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$last_1pres</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$last_1temp</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$datetime</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1time</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pressure</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1pres</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1temp</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//print for cacti</span>
<span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;scppres:<span style="color: #009933; font-weight: bold;">%0.2f</span> scptemp:<span style="color: #009933; font-weight: bold;">%2.2f</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pressure</span><span style="color: #339933;">,</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//max and min data for Pachube</span>
<span style="color: #000088;">$press_min</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'800'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$press_max</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'1050'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$temp_min</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'-10'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$temp_max</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'50'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Pachube</span>
<span style="color: #666666; font-style: italic;">//id1:Press id2:Temp</span>
<span style="color: #000088;">$json_arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                  <span style="color: #0000ff;">'version'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0.0'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'datastreams'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'at'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$datetime</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'max_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$press_max</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'min_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$press_min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$pressure</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                         <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'2'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'at'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$datetime</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'max_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$temp_max</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'min_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$temp_min</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$temp</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
                  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$update_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$json_arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PachubeAPI<span style="color: #009900;">&#40;</span><span style="color: #000088;">$api_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$obj</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">updateFeed</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'json'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$feed</span><span style="color: #339933;">,</span> <span style="color: #000088;">$update_data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1438/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1438" />
	</item>
		<item>
		<title>PHP + PachubeAPIでPachubeにデータを投げる</title>
		<link>http://www.boenkyo.com/archives/1414</link>
		<comments>http://www.boenkyo.com/archives/1414#comments</comments>
		<pubDate>Fri, 16 Sep 2011 15:18:23 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1414</guid>
		<description><![CDATA[Pachube(パッチベイ)に挑戦 データを引っ張れるようになったストロベリーリナックス社のUSBガイガーカウンタキットをより活用すべく、cactiと同時にPachubeにデータをアップロードするようにしました。 PHP [...]]]></description>
			<content:encoded><![CDATA[<h4>Pachube(パッチベイ)に挑戦</h4>
<p><a title="CentOSでストロベリーリナックスUSBガイガーカウンタキット" href="http://www.boenkyo.com/archives/1353">データを引っ張れるようになった</a><a href="http://strawberry-linux.com/catalog/items?code=53001" target="_blank">ストロベリーリナックス社のUSBガイガーカウンタキット</a>をより活用すべく、cactiと同時に<a href="https://pachube.com/">Pachube</a>にデータをアップロードするようにしました。</p>
<h4>PHPでデータを送信する</h4>
<p><a href="http://api.pachube.com/v2/">Pachube v2 API Documentation</a>を流し読みしましたが、結局、PHP用のクラス<a href="https://github.com/MunGell/PachubeAPI">PachubeAPI</a>をみつけ、活用いたしました。ありがとうございます。</p>
<h4>前回のに追加するコード</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;">//頭に追加</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PachubeAPI.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//上記本文参照</span>
&nbsp;
<span style="color: #339933;">.....</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Pachube</span>
<span style="color: #000088;">$api_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'your_api_key_here'</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//APIキー</span>
<span style="color: #000088;">$feed</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'5_digit_feed_number'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//作成したfeedのURLの末尾の数字</span>
&nbsp;
<span style="color: #339933;">.....</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//(略)前の記事参照のこと</span>
&nbsp;
<span style="color: #339933;">.....</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最後に追加</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Pachube用データ作成と投稿</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//先に取得済みのcpmとusvを四捨五入。</span>
<span style="color: #666666; font-style: italic;">//JSON化するために数値-&gt;文字列に</span>
<span style="color: #000088;">$cpm_round</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strval</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">round</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cpm</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$usv_round</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strval</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">round</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$usv</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//json_encode用に配列を作成。idとcurrent_valueを代入。</span>
<span style="color: #000088;">$json_arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
                  <span style="color: #0000ff;">'version'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0.0'</span><span style="color: #339933;">,</span>
                  <span style="color: #0000ff;">'datastreams'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$cpm_round</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                                         <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'2'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'current_value'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$usv_round</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
                  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//JSON化</span>
<span style="color: #000088;">$update_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$json_arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//データを投稿</span>
<span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PachubeAPI<span style="color: #009900;">&#40;</span><span style="color: #000088;">$api_key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$obj</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">updateFeed</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'json'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$feed</span><span style="color: #339933;">,</span> <span style="color: #000088;">$update_data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h4>まとめ</h4>
<p>Pachubeはなんとなく難しそうで敬遠していたのですが、<a href="https://github.com/MunGell/PachubeAPI">PachubeAPI</a>のおかげで特に新しい勉強をしなくても運用開始できました。改めて感謝です。</p>
<h4>Pachubeから動的画像出力</h4>
<p><img alt="" src="http://api.pachube.com/v2/feeds/35771/datastreams/2.png?width=730&#038;height=250&#038;colour=%23243cf1&#038;duration=1week&#038;legend=uSv/h(=cpm/120@LND712)&#038;title=Radiation@Himeji, Hyogo(w/ Strawberry Linux USB Geiger Counter)&#038;stroke_size=4&#038;show_axis_labels=true&#038;detailed_grid=true&#038;scale=manual&#038;min=0.08&#038;timezone=Osaka" class="alignnone" width="730" height="250" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1414/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1414" />
	</item>
		<item>
		<title>CentOSでストロベリーリナックスUSBガイガーカウンタキット</title>
		<link>http://www.boenkyo.com/archives/1353</link>
		<comments>http://www.boenkyo.com/archives/1353#comments</comments>
		<pubDate>Tue, 13 Sep 2011 04:58:37 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[自宅サーバ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1353</guid>
		<description><![CDATA[ストロベリーリナックス社のUSBガイガーカウンタキット(以下文中ではUSBガイガー)をCentOSで利用できるようにしてみたので記録。なお、プログラミングは初心者です。よろしければ間違い、よりスマートな方法をご教示下さい [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://strawberry-linux.com/catalog/items?code=53001" target="_blank">ストロベリーリナックス社のUSBガイガーカウンタキット</a>(以下文中ではUSBガイガー)をCentOSで利用できるようにしてみたので記録。なお、プログラミングは初心者です。よろしければ間違い、よりスマートな方法をご教示下さい。</p>
<p><a href="http://www.boenkyo.com/wp-content/uploads/graph_image.png"><img src="http://www.boenkyo.com/wp-content/uploads/graph_image-300x116.png" alt="" title="USBガイガーをグラフ化" width="300" height="116" class="alignnone size-medium wp-image-1408" /></a></p>
<h4>概要</h4>
<p>単品でサーバ機に接続すべきか、Arduinoを挟むか(少し)検討しました。</p>
<p>直結するメリット:</p>
<ol>
<li>GM管のパルスをカウントするアルゴリズムが他のユーザと共通であるため全国のユーザと比較することが可能。</li>
<li>追加投資が不要。</li>
</ol>
<p>直結するデメリット:</p>
<ol>
<li><a href="http://or2.to/2011/05/usb-geiger3.html">USB-GEIGERでモニタリングポストを作ろう3</a>で解析されているように「連続稼動は「約194日」で、放射線カウントは同様に、最大「約43万」まで計測可能」という制限を受けてしまう。</li>
<li>既存のドライバ類がないので自力でなんとかしなくてはいけない。</li>
</ol>
<p>下記のリンクを参考にしたところ、ドライバじゃなくてもアクセス可能であり、また、同類のボード用のツール・ドライバは存在することがわかりました。そこで、そのソースを勝手にいじくってUSBガイガーを利用しようと思い立ちました。</p>
<p>秋月Arduinoをいくつももってるのでメリット2)は無関係。といっても、電源が2つ必要なのは面倒だなーと思ってましたが、Arduinoからパルス・電源・GNDと3本引っ張ればよいのでありました(<a href="http://d.hatena.ne.jp/ksh0ji/20101014/128703279">参考リンク9</a>)。デメリット1は大きいのですが、メリット1のことも考えると・・・。そんなわけで、とりあえずソースいじくって数字をとれるところまでできましたので記録しておきます。でも今後Arduino経由に移行するかも。</p>
<h4>参考</h4>
<p>詳細な情報提供に感謝です。</p>
<ol>
<li><a href="http://or2.to/2011/05/usb-geiger3.html" target="_blank">USB-GEIGERでモニタリングポストを作ろう3 &#8211; ITのある生活</a></li>
<li><a href="http://d.hatena.ne.jp/dayflower/20090721/1248159253" target="_blank">USB-RH で遊ぶ &#8211; daily dayflower</a></li>
<li><a href="http://www.dd.iij4u.or.jp/~briareos/soft/usbrh.html" target="_blank">USBRH on Linux</a></li>
<li><a href="http://green-rabbit.sakura.ne.jp/usbrh/" target="_blank">USBRH driver for Linux</a></li>
<li><a href="http://www.nk-home.net/~aoyama/usbrh/" target="_blank">Using USBRH on *BSD</a></li>
<li><a href="http://d.hatena.ne.jp/stereocat/20100712/1278937930" target="_blank">USBRH+Cactiで室温モニタリング(1) &#8211; # cat /var/log/stereocat | tail -n3</a></li>
<li><a href="http://penguin.tantin.jp/hard/libusb%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html" target="_blank">libusbについて &#8211; Linux工作室</a></li>
<li><a href="http://nekohigeweb.dyndns.org/memo/weather/usbweather.php" target="_blank">ねこひげめも｜Linux(CentOS)でUSBウェザーボードを使って遊ぶ</a></li>
<li><a href="http://d.hatena.ne.jp/ksh0ji/20101014/128703279" target="_blank">ガイガーカウンターのカウント数をTwitterに投稿するアプリを作る &#8211; なんか作る</a></li>
</ol>
<h4>接続</h4>
<p>まず、キットを組み立てます。GM管の扱いに注意すれば、半田付けするだけです。圧電ブザー音のオンオフはUSBガイガーの再起動で初期化されるごとにオンになるため、ブザーにはセロハンテープかなんかでフタをしておくとよいかもしれません。</p>
<p>USBガイガーをサーバに接続してlsusbするとずらずらっとUSB機器が表示されますが、「Bus 007 Device 002: ID 1774:1002」とID 1774:1002と出る行が当USBガイガー機です。BusとDeviceは環境によって異なります。</p>
<p>上記のBusとDeviceの数字を用いてlsusb -D /proc/bus/usb/007/002とすると、詳細情報が表示されます。<a href="http://www.nk-home.net/~aoyama/usbrh/" target="_blank">Using USBRH on *BSD</a>の一番下の資料のデータと突き合わせてみたところ、USBガイガーとUSBRHは接続に関しては同一と判断し、USBRH用ツールを改造することにしました。なお、ドライバーのソースも拝見しましたが、自分の実力では改造は到底無理と判断。</p>
<p>ソースいじりにとりかかる前にＵＳＢデバイス接続後の振る舞いを予め設定しておきます。<a href="http://d.hatena.ne.jp/dayflower/20090721/1248159253" target="_blank">USB-RH で遊ぶ &#8211; daily dayflower</a>より、udevルールを設定。</p>
<h4>ソースの改変</h4>
<p><a href="http://www.dd.iij4u.or.jp/~briareos/soft/usbrh.html">USBRH on Linux</a>よりUSBRHのソースを頂きます。これならなんとなく自分でも分かりそうです(USB絡みの難しいところは定番記述として無視するとして)。</p>
<p>最初に<a href="http://d.hatena.ne.jp/dayflower/20090721/1248159253" target="_blank">USB-RH で遊ぶ &#8211; daily dayflower</a>のパッチを当てました。</p>
<p>いよいよ、USBガイガー用にソースを修正します。</p>
<p>計算にべき乗を使うのでmath.hをincludeしないといけないようです。VENDER IDとPRODUCT IDは上記、lsusbより得た「Bus 007 Device 002: ID 1774:1002」を使用。PRODUCT IDがひとつ違うだけです。</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include</span>
&nbsp;
<span style="color: #339933;">#define USBGEIGER_VENDOR 0x1774</span>
<span style="color: #339933;">#define USBGEIGER_PRODUCT 0x1002</span></pre></div></div>

<p>その他、USBRHとなっているところはUSBGEIGERに一括置換。カウントとタイマーをカンマ区切りで出力するオプションCを追加しました。</p>
<p>さて、USBデバイスから返された数値は変数buffの中に<a href="http://or2.to/2011/05/usb-geiger3.html">USB-GEIGERでモニタリングポストを作ろう3 &#8211; ITのある生活</a>での解析にあるように「91cc0100f34c07」と7バイトで入っています。</p>
<p>buffから数字を取り出すために以下のとおり、関数を作成。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> calccount<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>in<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> length<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> d<span style="color: #339933;">,</span> s<span style="color: #339933;">;</span>
d <span style="color: #339933;">=</span> s <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span>length<span style="color: #339933;">;</span>i<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">&lt;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        d <span style="color: #339933;">=</span> in<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> pow<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">16</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//printf(&quot;%02x %d\n&quot;, in[i-1], d);</span>
        s <span style="color: #339933;">=</span> s <span style="color: #339933;">+</span> d<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> s<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> calctimer<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>in<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> length<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> d<span style="color: #339933;">,</span> s<span style="color: #339933;">;</span>
d <span style="color: #339933;">=</span> s <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span>length<span style="color: #339933;">;</span>i<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        d <span style="color: #339933;">=</span> in<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> pow<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">16</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">-</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//printf(&quot;%02x %d\n&quot;, in[i-1], d);</span>
        s <span style="color: #339933;">=</span> s <span style="color: #339933;">+</span> d<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> s<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>あとは、出力内容を上記関数にいれかえ、printfで整形。</p>
<p>math.hを使うとコンパイルでエラーが出るのでMakefileの記述-lmオプション追加。無事コンパイル完了。</p>
<p>usbgeiger -cとすると「118037,479109」のように返すことができるようになりました。crontabで/usr/local/bin/usbgeiger -c &gt;&gt;/var/www/html/data/count.txtとして、5分ごとのログを残しています(このサーバではないです)。</p>
<p>これをcactiでグラフ化しました。PHPでログファイルを開き、5分間で増加したカウントから導いたCPMと変換係数を120とした参考uSvを表示するようにしました。</p>
<p>カウント、タイマー、それぞれ最終行とその前の行との差をもって算出していますが、再起動後は最終行とその前の行の数字のつながりがおかしくなると思うのでそこだけ条件分岐させています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
49
50
51
52
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">mb_internal_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//ログファイル指定</span>
<span style="color: #000088;">$datafile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/var/www/html/hoge/counter.txt&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$t_file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$datafile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//係数</span>
<span style="color: #000088;">$lnd712</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">120</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$rows</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$t_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$cols</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$t_file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$csv_arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_map</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;str_getcsv&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$rows</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$row_c</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最終行</span>
<span style="color: #000088;">$last_1c</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$last_1t</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最終行の前の行</span>
<span style="color: #000088;">$last_2c</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$last_2t</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最終行の前の前の行</span>
<span style="color: #000088;">$last_3c</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$last_3t</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$csv_arr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row_c</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最終行の前の行と最終行との差</span>
<span style="color: #000088;">$count_1_2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1c</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$last_2c</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$timer_1_2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1t</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$last_2t</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//最終行は無視し、その一つ前の組み合わせ。</span>
<span style="color: #000088;">$count_2_3</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_2c</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$last_3c</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$timer_2_3</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_2t</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$last_3t</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//CPMとuSvを計算。</span>
<span style="color: #666666; font-style: italic;">//最起動直後のデータは無視する</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$count_1_2</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$counter</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1c</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$timer</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_1t</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cpm</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$count_1_2</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$timer_1_2</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$usv</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cpm</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$lnd712</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$counter</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_2c</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$timer</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$last_2t</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$cpm</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$count_2_3</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$timer_2_3</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">60</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$usv</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$cpm</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$lnd712</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;counter:<span style="color: #009933; font-weight: bold;">%d</span> timer:<span style="color: #009933; font-weight: bold;">%d</span> cpm:<span style="color: #009933; font-weight: bold;">%d</span> usv:%.3g&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$counter</span><span style="color: #339933;">,</span> <span style="color: #000088;">$timer</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cpm</span><span style="color: #339933;">,</span> <span style="color: #000088;">$usv</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>最後にusbrh-0.05.tar.gz[25-Mar-2008]との差分も載せておきます。<br />
ベタベタコードですいません。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
</pre></td><td class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #440088;">@@ -24,45 +24,10 @@</span>
 #include &lt;usb.h&gt;
 #include &lt;unistd.h&gt;
 #include &lt;string.h&gt;
<span style="color: #00b000;">+#include &lt;math.h&gt;</span>
&nbsp;
<span style="color: #991111;">-#define USBRH_VENDOR  0x1774</span>
<span style="color: #991111;">-#define USBRH_PRODUCT 0x1001</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-// parameter</span>
<span style="color: #991111;">-// http://www.sensirion.com/en/pdf/product_information/Data_Sheet_humidity_sensor_SHT1x_SHT7x_E.pdf</span>
<span style="color: #991111;">-// http://www.syscom-inc.co.jp/pdf/sht_datasheet_j.pdf</span>
<span style="color: #991111;">-#define d1 -40.00</span>
<span style="color: #991111;">-#define d2 0.01</span>
<span style="color: #991111;">-#define c1 -4</span>
<span style="color: #991111;">-#define c2 0.0405</span>
<span style="color: #991111;">-#define c3 -0.0000028</span>
<span style="color: #991111;">-#define t1 0.01</span>
<span style="color: #991111;">-#define t2 0.00008</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-// Temperature = d1+d2*SOt</span>
<span style="color: #991111;">-// d1  -40.00</span>
<span style="color: #991111;">-// d2  0.04</span>
<span style="color: #991111;">-double convert_temp<span style="">&#40;</span>int in<span style="">&#41;</span></span>
<span style="color: #991111;">-<span style="">&#123;</span></span>
<span style="color: #991111;">-double tmp;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    tmp = <span style="">0</span>;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    tmp = d1+d2*in;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    return<span style="">&#40;</span>tmp<span style="">&#41;</span>;</span>
<span style="color: #991111;">-<span style="">&#125;</span></span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-double convert_humidity<span style="">&#40;</span>int in<span style="">&#41;</span></span>
<span style="color: #991111;">-<span style="">&#123;</span></span>
<span style="color: #991111;">-double tmp;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    tmp = <span style="">0</span>;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    tmp = c1+c2*in+c3*<span style="">&#40;</span>in*in<span style="">&#41;</span>;</span>
<span style="color: #991111;">-</span>
<span style="color: #991111;">-    return<span style="">&#40;</span><span style="">&#40;</span>t1-<span style="">25</span><span style="">&#41;</span>*<span style="">&#40;</span>t1+t2*in<span style="">&#41;</span>+tmp<span style="">&#41;</span>;</span>
<span style="color: #991111;">-<span style="">&#125;</span></span>
<span style="color: #00b000;">+#define USBGEIGER_VENDOR  0x1774</span>
<span style="color: #00b000;">+#define USBGEIGER_PRODUCT 0x1002</span>
&nbsp;
 void dump<span style="">&#40;</span>unsigned char *in, int length<span style="">&#41;</span>
 <span style="">&#123;</span>
<span style="color: #440088;">@@ -82,6 +47,34 @@</span>
&nbsp;
 <span style="">&#125;</span>
&nbsp;
<span style="color: #00b000;">+int calccount<span style="">&#40;</span>unsigned char *in, int length<span style="">&#41;</span></span>
<span style="color: #00b000;">+<span style="">&#123;</span></span>
<span style="color: #00b000;">+int i, d, s;</span>
<span style="color: #00b000;">+d = s = <span style="">0</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+    for<span style="">&#40;</span>i=length;i&gt;<span style="">0</span>;i--<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+      if<span style="">&#40;</span>i&lt;5<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+       d = in<span style="">&#91;</span>i-<span style="">1</span><span style="">&#93;</span> * pow<span style="">&#40;</span><span style="">16</span>,<span style="">&#40;</span>i-<span style="">1</span><span style="">&#41;</span>*<span style="">2</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       s = s + d;</span>
<span style="color: #00b000;">+        <span style="">&#125;</span></span>
<span style="color: #00b000;">+    <span style="">&#125;</span></span>
<span style="color: #00b000;">+    return s;</span>
<span style="color: #00b000;">+<span style="">&#125;</span></span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+int calctimer<span style="">&#40;</span>unsigned char *in, int length<span style="">&#41;</span></span>
<span style="color: #00b000;">+<span style="">&#123;</span></span>
<span style="color: #00b000;">+int i, d, s;</span>
<span style="color: #00b000;">+d = s = <span style="">0</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+    for<span style="">&#40;</span>i=length;i&gt;<span style="">0</span>;i--<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+      if<span style="">&#40;</span>i&gt;4<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+       d = in<span style="">&#91;</span>i-<span style="">1</span><span style="">&#93;</span> * pow<span style="">&#40;</span><span style="">16</span>,<span style="">&#40;</span>i-<span style="">5</span><span style="">&#41;</span>*<span style="">2</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       s = s + d;</span>
<span style="color: #00b000;">+        <span style="">&#125;</span></span>
<span style="color: #00b000;">+    <span style="">&#125;</span></span>
<span style="color: #00b000;">+    return s;</span>
<span style="color: #00b000;">+<span style="">&#125;</span></span>
<span style="color: #00b000;">+</span>
 struct usb_device *searchdevice<span style="">&#40;</span>unsigned int vendor, unsigned int product, int num<span style="">&#41;</span>
 <span style="">&#123;</span>
 struct usb_bus *bus;
<span style="color: #440088;">@@ -113,7 +106,7 @@</span>
&nbsp;
     count=<span style="">0</span>;
&nbsp;
<span style="color: #991111;">-    puts<span style="">&#40;</span>&quot;listing:USBRH&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+    puts<span style="">&#40;</span>&quot;listing:USBGEIGER&quot;<span style="">&#41;</span>;</span>
&nbsp;
     for <span style="">&#40;</span>bus = usb_get_busses<span style="">&#40;</span><span style="">&#41;</span>; bus; bus = bus-&gt;next<span style="">&#41;</span><span style="">&#123;</span>
         for <span style="">&#40;</span>dev = bus-&gt;devices; dev; dev = dev-&gt;next<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #440088;">@@ -132,14 +125,16 @@</span>
&nbsp;
 void usage<span style="">&#40;</span><span style="">&#41;</span>
 <span style="">&#123;</span>
<span style="color: #991111;">-    puts<span style="">&#40;</span>&quot;USBRH on Linux 0.05 by Briareos\nusage: usbrh <span style="">&#91;</span>-vthm1fl<span style="">&#93;</span>\n&quot;</span>
<span style="color: #00b000;">+    puts<span style="">&#40;</span>&quot;USBGEIGER on Linux 0.00 by Masaki Kamimura\n<span style="">&#40;</span>originally published as USBRH on Linux by Mr. Briareos<span style="">&#41;</span>\n\nusage: usbgeiger <span style="">&#91;</span>-vthm1cfls<span style="">&#93;</span>\n&quot;</span>
          &quot;       -v : verbose\n&quot;
<span style="color: #991111;">-         &quot;       -t : temperature <span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
<span style="color: #991111;">-         &quot;       -h : humidity <span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
<span style="color: #991111;">-         &quot;       -m : temperature/humidity output<span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
<span style="color: #00b000;">+         &quot;       -t : counter <span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
<span style="color: #00b000;">+         &quot;       -h : timer <span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
<span style="color: #00b000;">+         &quot;       -m : counter/timer output<span style="">&#40;</span>for MRTG2<span style="">&#41;</span>\n&quot;</span>
          &quot;       -<span style="">1</span> : <span style="">1</span>-line output\n&quot;
<span style="color: #00b000;">+         &quot;       -c : csv\n&quot;</span>
          &quot;       -fn: set device number<span style="">&#40;</span>n&gt;<span style="">0</span><span style="">&#41;</span>\n&quot;
<span style="color: #991111;">-         &quot;       -l : Device list\n&quot; <span style="">&#41;</span>;</span>
<span style="color: #00b000;">+         &quot;       -l : Device list\n&quot;</span>
<span style="color: #00b000;">+         &quot;       -sn: set sleep duration in n msec <span style="">&#40;</span>default: 100ms<span style="">&#41;</span>\n&quot; <span style="">&#41;</span>;</span>
 <span style="">&#125;</span>
&nbsp;
 int main<span style="">&#40;</span>int argc, char *argv<span style="">&#91;</span><span style="">&#93;</span><span style="">&#41;</span>
<span style="color: #440088;">@@ -148,24 +143,26 @@</span>
 usb_dev_handle *dh;
 char buff<span style="">&#91;</span><span style="">512</span><span style="">&#93;</span>;
 int rc;
<span style="color: #991111;">-int iTemperature, iHumidity, opt;</span>
<span style="color: #991111;">-double temperature, humidity;</span>
<span style="color: #00b000;">+int opt;</span>
<span style="color: #00b000;">+int iCounter, iTimer;</span>
 unsigned char data<span style="">&#91;</span><span style="">8</span><span style="">&#93;</span>;
<span style="color: #991111;">-char flag_v, flag_t, flag_h, flag_d, flag_f, flag_1line, flag_mrtg, flag_l;</span>
<span style="color: #00b000;">+char flag_v, flag_t, flag_h, flag_d, flag_f, flag_1line, flag_mrtg, flag_l, flag_c;</span>
 char tmpDevice<span style="">&#91;</span><span style="">8</span><span style="">&#93;</span>;
 int  DeviceNum;
<span style="color: #00b000;">+unsigned long sleep_usec;</span>
&nbsp;
     dev = NULL;
     dh = NULL;
     rc = <span style="">0</span>;
     DeviceNum = <span style="">1</span>;
<span style="color: #991111;">-    flag_f = flag_v = flag_t = flag_h = flag_d = flag_1line = flag_mrtg = flag_l = <span style="">0</span>;</span>
<span style="color: #991111;">-    temperature = humidity = <span style="">0</span>;</span>
<span style="color: #00b000;">+    flag_f = flag_v = flag_t = flag_h = flag_d = flag_1line = flag_mrtg = flag_l = flag_c = <span style="">0</span>;</span>
<span style="color: #00b000;">+    counter = timer = <span style="">0</span>;</span>
<span style="color: #00b000;">+    sleep_usec = <span style="">1000</span> * <span style="">1000</span>;</span>
     memset<span style="">&#40;</span>buff, <span style="">0</span>, sizeof<span style="">&#40;</span>buff<span style="">&#41;</span><span style="">&#41;</span>;
     memset<span style="">&#40;</span>data, <span style="">0</span>, sizeof<span style="">&#40;</span>data<span style="">&#41;</span><span style="">&#41;</span>;
     memset<span style="">&#40;</span>tmpDevice, <span style="">0</span>, sizeof<span style="">&#40;</span>tmpDevice<span style="">&#41;</span><span style="">&#41;</span>;
&nbsp;
<span style="color: #991111;">-    while<span style="">&#40;</span><span style="">&#40;</span>opt = getopt<span style="">&#40;</span>argc, argv,&quot;lvth1dmf:?&quot;<span style="">&#41;</span><span style="">&#41;</span> != -1<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+    while<span style="">&#40;</span><span style="">&#40;</span>opt = getopt<span style="">&#40;</span>argc, argv,&quot;lcvth1dmf:s:?&quot;<span style="">&#41;</span><span style="">&#41;</span> != -1<span style="">&#41;</span><span style="">&#123;</span></span>
         switch<span style="">&#40;</span>opt<span style="">&#41;</span><span style="">&#123;</span>
             case 'v':
                 flag_v = <span style="">1</span>;
<span style="color: #440088;">@@ -196,6 +193,12 @@</span>
             case 'l':
                 flag_l = <span style="">1</span>;
                 break;
<span style="color: #00b000;">+           case 's':</span>
<span style="color: #00b000;">+               sleep_usec = atoi<span style="">&#40;</span>optarg<span style="">&#41;</span> * <span style="">1000</span>;</span>
<span style="color: #00b000;">+               break;</span>
<span style="color: #00b000;">+           case 'c':</span>
<span style="color: #00b000;">+               flag_c = <span style="">1</span>;</span>
<span style="color: #00b000;">+               break;</span>
             default:
                 usage<span style="">&#40;</span><span style="">&#41;</span>;
                 exit<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span>;
<span style="color: #440088;">@@ -208,20 +211,20 @@</span>
     usb_find_devices<span style="">&#40;</span><span style="">&#41;</span>;
&nbsp;
     if<span style="">&#40;</span>flag_l<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        listdevice<span style="">&#40;</span>USBRH_VENDOR, USBRH_PRODUCT<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        listdevice<span style="">&#40;</span>USBGEIGER_VENDOR, USBGEIGER_PRODUCT<span style="">&#41;</span>;</span>
         exit<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span>;
     <span style="">&#125;</span>
&nbsp;
     if<span style="">&#40;</span>flag_d<span style="">&#41;</span>
         usb_set_debug<span style="">&#40;</span><span style="">5</span><span style="">&#41;</span>;
&nbsp;
<span style="color: #991111;">-    if<span style="">&#40;</span><span style="">&#40;</span>dev = searchdevice<span style="">&#40;</span>USBRH_VENDOR, USBRH_PRODUCT, DeviceNum<span style="">&#41;</span><span style="">&#41;</span> == <span style="">&#40;</span>struct usb_device *<span style="">&#41;</span>NULL<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #991111;">-        puts<span style="">&#40;</span>&quot;USBRH not found&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+    if<span style="">&#40;</span><span style="">&#40;</span>dev = searchdevice<span style="">&#40;</span>USBGEIGER_VENDOR, USBGEIGER_PRODUCT, DeviceNum<span style="">&#41;</span><span style="">&#41;</span> == <span style="">&#40;</span>struct usb_device *<span style="">&#41;</span>NULL<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+        puts<span style="">&#40;</span>&quot;USBGEIGER not found&quot;<span style="">&#41;</span>;</span>
         exit<span style="">&#40;</span><span style="">1</span><span style="">&#41;</span>;
     <span style="">&#125;</span>
&nbsp;
     if<span style="">&#40;</span>flag_d<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        puts<span style="">&#40;</span>&quot;USBRH is found&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        puts<span style="">&#40;</span>&quot;USBGEIGER is found&quot;<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>
     dh = usb_open<span style="">&#40;</span>dev<span style="">&#41;</span>;
     if<span style="">&#40;</span>dh == NULL<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #440088;">@@ -230,15 +233,21 @@</span>
     <span style="">&#125;</span>
&nbsp;
     if<span style="">&#40;</span><span style="">&#40;</span>rc = usb_set_configuration<span style="">&#40;</span>dh, dev-&gt;config-&gt;bConfigurationValue<span style="">&#41;</span><span style="">&#41;</span>&lt;<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        puts<span style="">&#40;</span>&quot;usb_set_configuration error&quot;<span style="">&#41;</span>;</span>
<span style="color: #991111;">-        usb_close<span style="">&#40;</span>dh<span style="">&#41;</span>;</span>
<span style="color: #991111;">-        exit<span style="">&#40;</span><span style="">3</span><span style="">&#41;</span>;</span>
<span style="color: #991111;">-    <span style="">&#125;</span></span>
<span style="color: #991111;">-</span>
<span style="color: #00b000;">+      if<span style="">&#40;</span><span style="">&#40;</span>rc = usb_detach_kernel_driver_np<span style="">&#40;</span>dh, dev-&gt;config-&gt;interface-&gt;altsetting-&gt;bInterfaceNumber<span style="">&#41;</span><span style="">&#41;</span>&lt;0<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+       printf<span style="">&#40;</span>&quot;usb_detach_kernel_driver_np error: %s\n&quot;, usb_strerror<span style="">&#40;</span><span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       usb_close<span style="">&#40;</span>dh<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       exit<span style="">&#40;</span><span style="">3</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+      <span style="">&#125;</span>else<span style="">&#123;</span></span>
<span style="color: #00b000;">+       if<span style="">&#40;</span><span style="">&#40;</span>rc =usb_set_configuration<span style="">&#40;</span>dh, dev-&gt;config-&gt;bConfigurationValue<span style="">&#41;</span><span style="">&#41;</span>&lt;0<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+         printf<span style="">&#40;</span>&quot;usb_set_configuration error: %s\n&quot;, usb_strerror<span style="">&#40;</span><span style="">&#41;</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+         usb_close<span style="">&#40;</span>dh<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+         exit<span style="">&#40;</span><span style="">3</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       <span style="">&#125;</span></span>
<span style="color: #00b000;">+      <span style="">&#125;</span></span>
<span style="color: #00b000;">+   <span style="">&#125;</span></span>
     if<span style="">&#40;</span><span style="">&#40;</span>rc =usb_claim_interface<span style="">&#40;</span>dh, dev-&gt;config-&gt;interface-&gt;altsetting-&gt;bInterfaceNumber<span style="">&#41;</span><span style="">&#41;</span>&lt;<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        //puts<span style="">&#40;</span>&quot;usb_claim_interface error&quot;<span style="">&#41;</span>;</span>
         if<span style="">&#40;</span><span style="">&#40;</span>rc = usb_detach_kernel_driver_np<span style="">&#40;</span>dh, dev-&gt;config-&gt;interface-&gt;altsetting-&gt;bInterfaceNumber<span style="">&#41;</span><span style="">&#41;</span>&lt;<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-            puts<span style="">&#40;</span>&quot;usb_detach_kernel_driver_np error&quot;<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+           printf<span style="">&#40;</span>&quot;usb_detach_kernel_driver_np error: %s\n&quot;, usb_strerror<span style="">&#40;</span><span style="">&#41;</span><span style="">&#41;</span>;</span>
             usb_close<span style="">&#40;</span>dh<span style="">&#41;</span>;
             exit<span style="">&#40;</span><span style="">4</span><span style="">&#41;</span>;
         <span style="">&#125;</span>else<span style="">&#123;</span>
<span style="color: #440088;">@@ -266,47 +275,50 @@</span>
&nbsp;
     // usb_control_msg<span style="">&#40;</span><span style="">&#41;</span> is successed
     if<span style="">&#40;</span>rc&gt;=<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        sleep<span style="">&#40;</span><span style="">1</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        usleep<span style="">&#40;</span>sleep_usec<span style="">&#41;</span>;</span>
&nbsp;
         // Read data from device
<span style="color: #991111;">-        rc = usb_bulk_read<span style="">&#40;</span>dh, <span style="">1</span>, buff, <span style="">7</span>, <span style="">5000</span><span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       rc = usb_bulk_read<span style="">&#40;</span>dh, <span style="">1</span>, buff, <span style="">7</span>, <span style="">5000</span><span style="">&#41;</span>;</span>
         if<span style="">&#40;</span>flag_d<span style="">&#41;</span><span style="">&#123;</span>
             if<span style="">&#40;</span>rc&lt;<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
                 puts<span style="">&#40;</span>&quot;usb_bulk_read error&quot;<span style="">&#41;</span>;
             <span style="">&#125;</span> else <span style="">&#123;</span>
<span style="color: #991111;">-                printf<span style="">&#40;</span>&quot;usb_bulk_read:<span style="">&#91;</span>%d<span style="">&#93;</span> bytes readed.\n&quot;, rc<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+                printf<span style="">&#40;</span>&quot;usb_bulk_read:<span style="">&#91;</span>%d<span style="">&#93;</span> bytes read.\n&quot;, rc<span style="">&#41;</span>;</span>
                 dump<span style="">&#40;</span>buff, rc<span style="">&#41;</span>;
             <span style="">&#125;</span>
         <span style="">&#125;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+       iCounter = calccount<span style="">&#40;</span>buff, rc<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+       iTimer = calctimer<span style="">&#40;</span>buff,rc<span style="">&#41;</span>;</span>
&nbsp;
<span style="color: #991111;">-        iTemperature = buff<span style="">&#91;</span><span style="">2</span><span style="">&#93;</span>&lt;&lt;<span style="">8</span>|<span style="">&#40;</span>buff<span style="">&#91;</span><span style="">3</span><span style="">&#93;</span>&amp;0xff<span style="">&#41;</span>;</span>
<span style="color: #991111;">-        iHumidity = buff<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span>&lt;&lt;<span style="">8</span>|<span style="">&#40;</span>buff<span style="">&#91;</span><span style="">1</span><span style="">&#93;</span>&amp;0xff<span style="">&#41;</span>;</span>
         if<span style="">&#40;</span>flag_d<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-            printf<span style="">&#40;</span>&quot;convert to integer<span style="">&#40;</span>temperature<span style="">&#41;</span>:<span style="">&#91;</span>%02x %02x<span style="">&#93;</span> -&gt; <span style="">&#91;</span>%04x<span style="">&#93;</span>\n&quot;, buff<span style="">&#91;</span><span style="">2</span><span style="">&#93;</span>, buff<span style="">&#91;</span><span style="">3</span><span style="">&#93;</span>, iTemperature<span style="">&#41;</span>;</span>
<span style="color: #991111;">-            printf<span style="">&#40;</span>&quot;convert to integer<span style="">&#40;</span>humidity<span style="">&#41;</span>:<span style="">&#91;</span>%02x %02x<span style="">&#93;</span> -&gt; <span style="">&#91;</span>%04x<span style="">&#93;</span>\n&quot;, buff<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span>, buff<span style="">&#91;</span><span style="">1</span><span style="">&#93;</span>, iHumidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+</span>
<span style="color: #00b000;">+          printf<span style="">&#40;</span>&quot;Counter: %d\n&quot;, iCounter<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+         printf<span style="">&#40;</span>&quot;Timer: %d\n&quot;, iTimer<span style="">&#41;</span>;</span>
         <span style="">&#125;</span>
<span style="color: #991111;">-        temperature = convert_temp<span style="">&#40;</span>iTemperature<span style="">&#41;</span>;</span>
<span style="color: #991111;">-        humidity    = convert_humidity<span style="">&#40;</span>iHumidity<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>
&nbsp;
     // Display Result
     if<span style="">&#40;</span>flag_v<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;Temperature: %.2f C\n&quot;, temperature<span style="">&#41;</span>;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;Humidity: %.2f %\n&quot;, humidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;Counter: %d \n&quot;, iCounter<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;Timer: %d \n&quot;, iTimer<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>else
     if<span style="">&#40;</span>flag_t<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;%.2f\n%.2f\n\nTemperature\n&quot;, temperature, temperature<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;%d\n%d\n\nCounter\n&quot;, iCounter, iCounter<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>else
     if<span style="">&#40;</span>flag_h<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;%.2f\n%.2f\n\nHumidity\n&quot;, humidity, humidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;%d\n%d\n\nTimer\n&quot;, iTimer, iTimer<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>else
     if<span style="">&#40;</span>flag_mrtg<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;%.2f\n%.2f\n\nTemperature/Humidity\n&quot;, temperature, humidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;%d\n%d\n\nCounter/Timer\n&quot;, iCounter, iTimer<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+    <span style="">&#125;</span>else</span>
<span style="color: #00b000;">+    if<span style="">&#40;</span>flag_c<span style="">&#41;</span><span style="">&#123;</span></span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;%d,%d\n&quot;, iCounter, iTimer<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>else
     if<span style="">&#40;</span>flag_1line<span style="">&#41;</span><span style="">&#123;</span>
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;Temperature: %.2f C Humidity: %.2f %%\n&quot;, temperature, humidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;Counter:%d Timer:%d \n&quot;, iCounter, iTimer<span style="">&#41;</span>;</span>
     <span style="">&#125;</span>else
<span style="color: #991111;">-        printf<span style="">&#40;</span>&quot;%.2f %.2f\n&quot;, temperature, humidity<span style="">&#41;</span>;</span>
<span style="color: #00b000;">+        printf<span style="">&#40;</span>&quot;%d %d\n&quot;, iCounter, iTimer<span style="">&#41;</span>;</span>
&nbsp;
     if<span style="">&#40;</span><span style="">&#40;</span>rc = usb_release_interface<span style="">&#40;</span>dh, dev-&gt;config-&gt;interface-&gt;altsetting-&gt;bInterfaceNumber<span style="">&#41;</span><span style="">&#41;</span>&lt;<span style="">0</span><span style="">&#41;</span><span style="">&#123;</span>
         puts<span style="">&#40;</span>&quot;usb_release_interface error&quot;<span style="">&#41;</span>;</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1353/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1353" />
	</item>
		<item>
		<title>あのgomiteが新製品を</title>
		<link>http://www.boenkyo.com/archives/1347</link>
		<comments>http://www.boenkyo.com/archives/1347#comments</comments>
		<pubDate>Wed, 27 Jul 2011 07:23:46 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[camera]]></category>
		<category><![CDATA[いろいろ]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1347</guid>
		<description><![CDATA[&#160; iPod touch用GPSを製品化するということで話題になっていたgomiteですが、GPSの商品化はいつの間にか立ち消えてしまっておりましたが、久しぶりにサイトが更新され、The tiltpodというコ [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>iPod touch用GPSを製品化するということで話題になっていたgomiteですが、GPSの商品化はいつの間にか立ち消えてしまっておりましたが、久しぶりにサイトが更新され、The tiltpodというコンデジ用の三脚的なものがリリースされるようです。</p>
<p>&nbsp;</p>
<p>The tiltpodは磁力を用いたボールジョイントでフレーミングを決めやすく、携帯するのが楽ちんな三脚的撮影補助ツールのようです。</p>
<p>&nbsp;</p>
<p><a href="http://www.boenkyo.com/wp-content/uploads/Magnet_Connect1.jpg"><img src="http://www.boenkyo.com/wp-content/uploads/Magnet_Connect1-300x300.jpg" alt="" title="Magnet_Connect1" width="300" height="300" class="alignnone size-medium wp-image-1348" /></a></p>
<p><a href="http://www.boenkyo.com/wp-content/uploads/tilt.jpg"><img src="http://www.boenkyo.com/wp-content/uploads/tilt-300x300.jpg" alt="" title="tilt" width="300" height="300" class="alignnone size-medium wp-image-1349" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1347/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1347" />
	</item>
		<item>
		<title>Chrome用電力使用モニター拡張　DENRYOKUモニターVer1.15</title>
		<link>http://www.boenkyo.com/archives/1337</link>
		<comments>http://www.boenkyo.com/archives/1337#comments</comments>
		<pubDate>Tue, 19 Jul 2011 07:15:08 +0000</pubDate>
		<dc:creator>masaki</dc:creator>
				<category><![CDATA[DENRYOKUモニター]]></category>

		<guid isPermaLink="false">http://www.boenkyo.com/?p=1337</guid>
		<description><![CDATA[電力使用状況データを取得し、表示します。電気の使い方の参考にご利用下さい。サーバー側を大幅に修正し、なるべくリアルタイムの数値を確認できるようにしました。東北電力で短期間更新データを提供しているChromeエクステンショ [...]]]></description>
			<content:encoded><![CDATA[<p>電力使用状況データを取得し、表示します。電気の使い方の参考にご利用下さい。サーバー側を大幅に修正し、なるべくリアルタイムの数値を確認できるようにしました。東北電力で短期間更新データを提供しているChromeエクステンションは少ないのではないかと思います。</p>
<p>【Ver1.15の変更点】<br />
従来、Yahoo! JAPANのAPIを使用していましたが、自サーバで電力会社各社のCSVデータを取得するものに変更。</p>
<p>東北電力、東京電力は現在時刻より10分程度の遅延で取得可能。関西電力はデータ更新が遅いのでもう少しかかっているようです。中部電力は１時間ごとのデータしか配信していないため、従来と変わらない更新間隔になっています。</p>
<p>※注意※<br />
深夜0時の各社ファイル更新の狭間でデータが表示できなくなっているのに昨夜ベッドで気づきましたが、取り急ぎ公開いたしました。今晩、取得プログラムを修正して、問題なければよいのですが、今晩もまた0時過ぎに取得・更新に失敗すると直しはまた翌日ということになります。</p>
<p><a href="https://chrome.google.com/webstore/detail/mijdkbcifcafbeiidljakkeinelffpbe">DENRYOKUモニター &#8211; Chrome Web Store</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.boenkyo.com/archives/1337/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.boenkyo.com/archives/1337" />
	</item>
	</channel>
</rss>

