Macで Suica や PASMO の履歴を読む
MacにPaSoRiを接続してSuicaやPASMOの履歴情報を読み出すプログラムができましたので、
Macユーザー向けに公開します。
(MacOS 10.4 でインテル版、PPC版で動作します。)
(注:チャージ(入金)など、書込の機能はありません。PaSoRiはRC-S320のみに対応しています。)
殆どの機能はネット上に公開されているlibpasorilに依存しています。
更にlibpasoriはlibusbを利用しています。(詳細はこれらのサイトをご覧下さい)
この二つのライブラリのおかげでEdyとSuica/PASMOの履歴情報を読み出すプログラムが実現できました。
それぞれの作者に感謝します。
プログラムは、インストールの楽なコンパイル済みのバイナリで公開します。
(自由に変更できるようソースも公開します。)
EdyValue.c とAppleScriptの著作権は作者の私にありますが、改変は自由です。
また、このソフトの利用は自己責任でお願いします。
【インストール方法】
1 まず、libusbをhttp://libusb.sourceforge.net/からダウンロードしてインストールします。
(既にインストール済みなら必要ありません)
<ダウンロードしたものを解凍してターミナルを起動し、解凍したディレクトリに移動して
./configure して、 sudo make install します>
(Developer toolsがインストールされている必要があります)
2 次に、SuicaValueをここからダウンロードしてホームディレクトリ(フォルダ)に置きます。
SuicaValue (インテルMac用) (PPC Mac用)
← 必要な方を右クリックして「リンク先を保存」してください。
3 SuicaValue に実行権を与えます。(ターミナルで、 chmod +x SuicaValue します)
4 PaSoRiを接続して動作を確認します。(ターミナルで ./SuicaValue すると、履歴が表示されます)
旨く動作しない場合は、ソースからコンパイルしてみてください。
5 GUIっぽく簡単に操作できるよう、AppleScriptも作成しました。
下のソースをコピーしてお使いください。(Scriptメニューに入れておくと便利でしょう)
【コンパイルする場合】
1 libpasoriをhttp://libpasori.sourceforge.jp/からダウンロードして解凍します。
2 解凍してできたフォルダ内にある「src」フォルダに「SuicaValue.c」のソースプログラムを保存します。
SuicaValue.c
C言語で書いています。(慣れていないので、奇麗なコードではありません。)
3 ターミナルで、srcフォルダに移動し、次のコマンドでコンパイルします。
「gcc -o SuicaValue `libusb-config --cflags` -D__LIBPASORI_WITH_LIBUSB SuicaValue.c libpasori_command.c libpasori_com_libusb.c libpasori_polling.c `libusb-config --libs`」
「strip SuicaValue」
(libpasori付属の「buildline-libusb.sh」をコピーして上記のように修正すると良いでしょう)
【フォーマットの解説】(推測です)
Suicaのデータは残金や通番など一部のバイトの並びが逆(リトルエンディアン)です。
最初の1バイトが 0x1B だとクレジット入金、0x07 or 0x08だと入金、0x46だとサンクスチャージの入金で、
0x16が自動改札乗降、0xC7が購買のようです。
5バイト目から2バイトが日付で、先頭から7ビットが年、4ビットが月、残り5ビットが日のようです。
(ここが面倒でしたね。パズルみたい)
7バイト目からの2バイトが入った駅、続く2バイトが出た駅がコードで入っています。
駅のコードは、路線コード/駅コードの組合わせで、有志によるデータベースが公開されています。
IC SFCard Fan DB Srevice このソフトではコードからの変換はしていません。
12バイト目から2バイトが残金(リトルエンディアン)です。
【PASMOについて】
PASMOを購入して試したところ、Suicaと同様に読み出すことができました。データ形式も同様のようです。
【SuicaValueを利用したアプリ(AppleScript)】
このアプリを利用することで、操作が簡単で見やすくなります。(駅名の検索にも対応しました)
【更新履歴等】
■2007/05/15 残高が一万円以上になると下1桁が欠けるバグを対策(SuicaValue.c および AppleScript版 SuicaViewer)
西峰様からバグレポートを頂きました。ありがとうございます。
■2007/04/19 駅名等の表示に対応(AppleScript版 SuicaViewer)
林様からデバッグの協力を頂きました。ありがとうございます。