Google Code Prettify

2014年11月9日日曜日

Raspberryで自動温度測定 取得データの自動アップロード (DS18B20 + Google Drive)

オフィスに局所的に寒いところがあるので、温度を測定して記録を取る仕組みを考えました。局所的に寒いってことなんで、寒い所と普通の所の2カ所で測定が必要なんで、もう1つRaspberryを買い足しました。いつの間にかにRaspberry Pi Model B+なんて新機種も出てるようで。USB端子が増えてたり、メモリカードが出っ張らなくて全体的にスッキリした感じです。




ケースに入れると入出力用端子へのアクセスが不自由なので、その辺にあったIDEケーブルを挿して、ケーブルの先に各種入出力機器をつなげるようにしました。
これに温度センサーをくっつけ、無線通信ドングルくっつけて、自動温度測定が実現できます。
ただ、Arduinoと違いA/D変換ができないので、そこらへんでよく見るようなアナログセンサーではダメです。いろいろ検索したら、DS18B20というセンサーがご丁寧にデジタル信号を出してくれるもので、Raspberryと連携させている人がたくさんいるようで、あとはモノマネ+カスタマイズで完了です。

プルアップの抵抗とセンサーを小さな基盤に半田付けするだけなのですが、かなりてこづりました。中学生の時の「技術」の時間に作った半田ごてを使い(変圧器も)、半田付けをしましたが、どうやら手際が悪かったのか、熱でセンサーを痛めてしまったらしく、温度センサーがゴミデータを返すだけです。。

仕方ないので、まともな半田ごてや半田ごてをのせる台やら、センサーを基盤に直付けしないで済むように、ソケットを買ったり、そもそもセンサーが正常かどうか確かめるためにブレッドボードを買ったり、電子工作環境を整えることにしました。香港の秋葉原はシャムシュイポですが、秋葉原の秋月電子とかラジオデパートみたいなパーツ売りの店って、なかなか思いつきません。深センの華強まで行くのはおっくうなので、よ〜く探したところ、ちゃんとありました。シャムシュイポに。

Welfare Electronic Component Ltd (華輝無線電行)
http://www.weclonline.com/tchi/index.asp

華輝無線電行ってとこでいろいろ買い込んで、温度センサーのほうは、Raspberryを買った泰豪科技というお店でまた買い直しました。これで4つセンサーを買ってます。センサー好きな日本人って覚えられてしまったような。
30年前と同じようなことを香港でしてるのが、情けないですが、好きでやってるんで気にしないと。

TELL HOW TECHNOLOGY (泰豪科技)
http://tellhow-tech.com

とりあえず、1に書いてある要領でセンサーからデータを取得できることを確認し、そこから2に書いてあることを実行します。センサーのIDがRaspberryの再起動とともにコロコロ変わってしまうので、IDを自動で検知するようにしたり、データの吐き出し先を外部のデータベースではなく、ローカルのテキストファイルに切り替えて、3で書いてある要領でGoogle Driveへの同期という仕組みに切り替えます。これで、通信が安定してないとしても、確実にデータの測定だけは続け、繋がったときに最新データをGoogle Driveに同期させることができます。

1. Connecting a temperature sensor to GPIO
http://raspberrywebserver.com/gpio/connecting-a-temperature-sensor-to-gpio.html

2. Temperature monitoring with the Raspberry Pi
http://iada.nl/en/blog/article/temperature-monitoring-raspberry-pi

3. Back up your Pi to your Google drive
http://raspberrywebserver.com/serveradmin/back-up-your-pi-to-your-google-drive.html

4. Raspberry piとGoogleドライブでバックアップ環境
http://blog.gogo-games.com/?p=167

2014年7月27日日曜日

NFCカード(payPass)を読んでみた - Octopusカードリーダー使ってみた

カードを読んで、カード番号次第で電源をオンにするような仕組みのプロトタイプを作りたかったので、ちょっとNFCの勉強しました。電源オンの仕組みは以前作ったので、今回取り組んだ案件の肝はカード読み取りです。

まずはカードリーターの確保。いろいろ買っちゃいましたが、案外これだけで十分そうです。HK$148 (2000円弱)で香港中のMTR駅構内のカスタマーサービスで買えます。

Welcome to Octopus Hong Kong - Get Your Octopus - Online Shop
http://onlineshop.octopus.com.hk/cart/?catid=3


ACSのACR122というものですが、シャムスイポだとHK$400とかぼったくられそうな品物ですが、MTRで買えばたったのHK$148です。香港の会社が製造していて、そこそこ海外でも認知されているようで。恐るべし香港。

制御に使うコンピューターですが、またしても、Raspberryで制御です。
持ち運んでどこでも見せることができるし、安いので最近はこればかりいじってます。
関係しそうな情報を片っ端から眺めて、ちょうどいいツールのめぼしをつけました。
やってることは、Linuxでlibnfcを使ってちょっとCとかシェルスクリプトを書いてるだけなんで、Raspberryだけでなくそこら中のLinuxでも同じはずです。

Hacking the NFC credit cards for fun and debit Renaud Lifchitz
http://www.ustream.tv/recorded/21805507
https://www.youtube.com/watch?v=VWIzW0rRw_s

"Hacking the NFC credit cards for fun and debit ;)" presentation slides - HES2012 - Renaud Lifchitz
https://code.google.com/p/readnfccc/downloads/detail?name=hes2012-bt-contactless-payments-insecurity.pdf&can=2&q=

Contacless payments insecurity Renaud Lifchitz - 8.8 Computer Security Conference October 24-25, 2013 – Santiago, Chile
http://www.8dot8.org/2013/deck/8dot8_2013_pres_RL.pdf


readnfccc ... English version
https://github.com/azet/readnfccc/blob/master/readnfccc.c

readnfccc 2.0 ... Spanish version
https://github.com/azet/readnfccc/blob/master/readnfccc.es.c


Complete list of EMV & NFC tags
https://www.eftlab.co.uk/index.php/site-map/knowledge-base/145-emv-nfc-tags

emvlab.org - the one-stop tools site for banking techies
http://www.emvlab.org/

emvlab.org:TLV Utilities - decodes EMV records encoded in tag-length-value (TLV) format.
http://www.emvlab.org/tlvutils/

Getting information from an EMV chip card with Java
http://blog.saush.com/2006/09/08/getting-information-from-an-emv-chip-card/

MasterCard PayPass Vendor Testing Guide (Terminals) Version 1.0 - September 2007
https://www.paypass.com/pdf/public_documents/PayPass%20Vendor%20Testing%20Guide%20Terminals%20Sept07.pdf

この、readnfcccっていうのが、手っ取り早くカード番号を読むのに使えそうなツールなのですが、どうもすんなりとは動きません。libnfcを入れるところから始まり、"byte_t"なんて型知らないとコンパイラに怒られ新しいバージョンを探し直したり、見つかった新しいバージョンもすんなりとは動作せず、自分の環境、カードで動作させるために、電文の内容を把握することが必要そうです。。ところどころプログラムをいじくって、どうにかこうにか、payPassカード番号だけは読み込むようになりました。。
下記のような雰囲気の修正をちょこちょこしてます。
単なるPoCだったのに、だいぶ疲れたのでもうおしまいです。

52c52
<   uint8_t SELECT_APP[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x04, 0x10, 0x10, 0x00};
---
>   uint8_t SELECT_APP[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x42, 0x10, 0x10, 0x00};
166,167c163
<     if (*res == 0x15 && *(res + 1) == 0x57) {
<     // if ( *(res + 1) == 0x57) {
---
>     if (*res == 0x9c && *(res + 1) == 0x57) {

2014年7月26日土曜日

Raspberry起動時にIP通知

出先にて、iPhoneやPocket Wifiを経由してRaspberryをインターネット接続している時に、iPadやらiPhoneからRaspberryにログインしたい時があります。Raspberry起動時にIP通知されるようにしました。

これを参考にメール設定。
TNET Raspberry Pi Site/ SMTP Mail Setup
http://rpi.tnet.com/project/faqs/smtp

具体的にはこんな感じで。
sudo apt-get install ssmtp
sudo apt-get install mailutils
sudo apt-get install mpack
pi@raspberrypi ~/wemo $ cat /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
#mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=raspberrypi

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES


AuthUser=xxxxxx@gmail.com
AuthPass=xxxxxxxxx
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

メール送信
echo "sample text" | mail -s "Subject" username@domain.tld

添付ファイル送信

mpack -s "test" /home/pi/test/somefile.ext username@domain.tld

Crontabに起動時の処理を設定
pi@raspberrypi ~/wemo $ crontab -l
MAILTO=""
@reboot /home/pi/wemo/reboot-notification
pi@raspberrypi ~/wemo $ cat reboot-notification
#!/bin/bash

echo `sudo ifconfig | mail -s "Reboot-Raspberry" xxxx@xxxxx.com`

これで、起動時にifconfigの内容がメールで届きます。実行内容を通知するうるさいメールはMAILTO=""で止めてます。

2014年6月23日月曜日

自作ネット家電 - Wemo制御をRaspberry Piで


前回導入した「エアコン制御のWemo」のため、単なるリモコン機能を作りたいだけなので、マイコンボードとでっかいボタンを買えば何とかなると思い、ArduinoとRaspberry Piのどちらにすればいいか悩み始めました。

Raspberry Piのほうが、フル機能のLinuxとして使い回しが楽そうで、どっちも大した値段ではないので、Raspberry Piを買いました。配線を減らしたいので、Wifiトークンを買い、基盤のままの運用は危なっかしいので透明なカバーも購入しました。シャムシュイポを歩き回って見つけ出したお店でしめてHK$530なり。びた一文もまけてくれなかった。






公式サイトからRASPBIANをダウンロードして、ラズビアン(レズビアン?)をインストールします。

Downloads | Raspberry Pi
http://www.raspberrypi.org/downloads/

INSTALLING OPERATING SYSTEM IMAGES ON MAC OS
http://www.raspberrypi.org/documentation/installation/installing-images/mac.md

Raspberry Pi の初期設定

Shell Script To Control Belkin WeMo’s

Shell Script To Control Belkin WeMo’s

RaspberryにWifi USBをくっつけて、Curl, Awkを入れた後、簡単なスクリプトをセットアップするだけでリモコンになりました。
ボタンと基盤を買ってみたものの、ベッドの上での乱暴な操作に耐えるにはきちんとした操作パッドが必要だと後になってから気がついたので、ファミコンキーパッドを買ってきました。これまたシャムスイポでHK$80。(写真は外部からの転用)




RaspberryPiでJoypadからコマンド入力
http://www.kotemaru.org/2013/08/25/raspberry-pi-joypad-command.html



2014年6月16日月曜日

自作ネット家電 - Wemoでエアコン電源制御

こんなものを買ってみました。照明制御とか空調制御とか。冬場のオイルヒーター制御にはフレキシブルなスケジュール制御や、出先からの電源制御があるといいので、こういうものが役に立ちそうだと、漠然な思いで買いました。10年近く前に秋月で購入した電源制御デバイスは有線LANや電源配線が煩雑で、感電/火事にならないかヒヤヒヤしたもので、結局実用にはいたりませんでした。
先月引っ越してきたフラットの寝室にはこんなエアコンがありました。リモコンは無く、壁のスイッチでオンオフします。寝たまま制御できないので、えらく困ります。

遠隔制御の第一歩として、まず電源プラグをくっつけました。壁からひっぺがして抜き差しできるコンセントにしました。




こんな感じにして、間にWemoをくっつけます。


Wemoが間に入り電源を制御できるようになりました。








すんなりとiPhoneで電源制御できるようになりましたが、いちいちiPhoneで操作するのがやっぱり面倒です。やっぱりリモコンがあるといいですが、ネット制御も捨てがたいです。という訳で、組み込み型のLinuxマシンのようなものを見っけて、それにボタンをくっつけて、「リモコン」を自作することにしました。これに関しては次の投稿で。