Felica 使って遊んでみたいなと思ったので PaSoRi を買ってみた。
とりあえず Python の nfcpy モジュールで IDm は取得できるようになったので、SQLite で IDm のリストやら社員名簿やらを作った。本当は Python オンリーで書きたかったけど、時間がなかったので Shell から Python を呼び出すようにした。外部サービスに投げるテストとして Tocaro を利用。
とりあえず IDm と社員番号、社員番号と名前を紐付けられるようなテーブルを作成。時間を記録するテーブルは SQLite の CURRENT_TIMESTAMP
に任せる。もうひとつ、「入」と「出」を記録するテーブルを作ってフラグを更新するようにしておくといいかもしれない。(帰るときにカード通し忘れるとずっと入室したままになるので0時リセットとかも組んで)
create table FELICA_EMP ( 'IDM' TEXT NOT NULL UNIQUE , 'EMP_ID' TEXT NOT NULL , 'TYPE_ID' NUMBER ); create table EMPLOYEES ( 'EMP_ID' NUMBER NOT NULL UNIQUE , 'LNAME' TEXT NOT NULL , 'FNAME' TEXT NOT NULL , 'E_LNAME' TEXT NOT NULL , 'E_FNAME' TEXT NOT NULL , 'H_LNAME' TEXT NOT NULL , 'H_FNAME' TEXT NOT NULL ); create table FELICA_TYPE ( 'TYPE_ID' NUMBER NOT NULL UNIQUE , 'NAME' TEXT NOT NULL UNIQUE ); create table TIME_CARD ( 'TIMESTAMP' DATE NOT NULL DEFAULT CURRENT_TIMESTAMP , 'IDM' TEXT NOT NULL ); insert into FELICA_EMP values('01010XXXXXXXXXXX',00000,1); insert into FELICA_EMP values('01010XXXXXXXXXXX',00000,2); insert into FELICA_EMP values('01140XXXXXXXXXXX',00000,3); insert into FELICA_EMP values('01120XXXXXXXXXXX',00000,4); insert into EMPLOYEES values(00000,'山田','太郎','やまだ','たろう','Yamada','Taro'); insert into FELICA_TYPE values(1,'Suica(JR)' ); insert into FELICA_TYPE values(2,'Suica(りんかい線)'); insert into FELICA_TYPE values(3,'Suica(モノレール)'); insert into FELICA_TYPE values(4,'PASMO' );
圧電スピーカーを買ったまま使ってなかったので、ファミリー○ートの入店音を PWM で作成。音楽やってたはずなのに楽譜全然よめなくなっててびっくり。MIDI データでそのまま投げられると楽なんだけど、とりあえず八分音符で周波数ベタ書き。
#!/usr/bin/python2 import RPi.GPIO as GPIO import time gpio_pin = 4 GPIO.setmode(GPIO.BCM) GPIO.setup(gpio_pin, GPIO.OUT, initial = GPIO.LOW) p = GPIO.PWM(gpio_pin, 440) scales = [ 369.994 , 311.127 , 220.000 , 311.127 , 329.628 , 440.000,440.000,440.000 , 329.628 , 369.994 , 329.628 , 220.000 , 311.127,311.127 ] try: p.start(20) for i in scales: p.ChangeFrequency(i) time.sleep(0.3) p.stop() finally: GPIO.cleanup()
実用するかどうかと言われれば多分しない。というのも、SQLite とか Oracle とか使える人がいないからデータベースの管理ができないのよね。(CSV をパースしたりでもいいんだけどさ…)