Felica使って遊んでみたいなと思ったので PaSoRiを買ってみた。
とりあえず Pythonの nfcpy モジュールで IDmは取得できるようになったので、SQLiteで IDmのリストやら社員名簿やらを作った。本当は Pythonオンリーで書きたかったけど、時間がなかったので Shell から Pythonを呼び出すようにした。外部サービスに投げるテストとして Tocaro を利用。
とりあえず IDmと社員番号、社員番号と名前を紐付けられるようなテーブルを作成。時間を記録するテーブルは SQLiteの CURRENT_TIMESTAMP
に任せる。もうひとつ、「入」と「出」を記録するテーブルを作ってフラグを更新するようにしておくといいかもしれない。(帰るときにカード通し忘れるとずっと入室したままになるので0時リセットとかも組んで)
createtable FELICA_EMP ( 'IDM' TEXT NOTNULLUNIQUE , 'EMP_ID' TEXT NOTNULL , 'TYPE_ID'NUMBER ); createtable EMPLOYEES ( 'EMP_ID'NUMBERNOTNULLUNIQUE , 'LNAME' TEXT NOTNULL , 'FNAME' TEXT NOTNULL , 'E_LNAME' TEXT NOTNULL , 'E_FNAME' TEXT NOTNULL , 'H_LNAME' TEXT NOTNULL , 'H_FNAME' TEXT NOTNULL ); createtable FELICA_TYPE ( 'TYPE_ID'NUMBERNOTNULLUNIQUE , 'NAME' TEXT NOTNULLUNIQUE ); createtable TIME_CARD ( 'TIMESTAMP'DATENOTNULLDEFAULT CURRENT_TIMESTAMP , 'IDM' TEXT NOTNULL ); insertinto FELICA_EMP values('01010XXXXXXXXXXX',00000,1); insertinto FELICA_EMP values('01010XXXXXXXXXXX',00000,2); insertinto FELICA_EMP values('01140XXXXXXXXXXX',00000,3); insertinto FELICA_EMP values('01120XXXXXXXXXXX',00000,4); insertinto EMPLOYEES values(00000,'山田','太郎','やまだ','たろう','Yamada','Taro'); insertinto FELICA_TYPE values(1,'Suica(JR)' ); insertinto FELICA_TYPE values(2,'Suica(りんかい線)'); insertinto FELICA_TYPE values(3,'Suica(モノレール)'); insertinto FELICA_TYPE values(4,'PASMO' );
圧電スピーカーを買ったまま使ってなかったので、ファミリー○ートの入店音を PWM で作成。音楽やってたはずなのに楽譜全然よめなくなっててびっくり。MIDIデータでそのまま投げられると楽なんだけど、とりあえず八分音符で周波数ベタ書き。
#!/usr/bin/python2import 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をパースしたりでもいいんだけどさ…)