SuicaでSESAME(セサミ)を解錠 【ラズパイ】

<Suicaでセサミを解錠する>設定方法 

Suicaへの公式対応は2019年を予定しておりますが、それまで待てない!、という方必見!ラズパイを使ってプログラミングをすればSuicaなどのNFCカードでセサミを解錠することが出来ますキラキラ


 

Suica設定に必要なもの

1.ご自身がオーナーであるセサミスマートロック本体

2.1のセサミにペアリングされているWiFiアクセスポイント

3.インターネット環境

4.NFCリーダ (※SONYのNFCリーダPaSoRi RC-S380を使用)

5.ラズペリーパイ 

  ・microSDカード

  ・microUSBケーブル

  ・USB充電器

  ・LANケーブル

  ・HDMIケーブル

  ・モニター

  ・キーボード 

 

NFCリーダの設置


1.シールを取り外しスクリュードライバーでネジを取りはずす


.中のモジュールを天板からはずす


. NFCリーダとラズベリーパイをUSBケーブルで繋げ、別箱へいれる

(※別箱の3Dデータはこちら)

※コイルの部分を上にする



電源に繋ぐケーブルはこちらの穴から通します。


 

 

 

 

プログラミングの設定

1. ラズパイに*nfcpyをインストールする  (*PythonでNFCリーダを取り扱うライブラリ)※ラズベリーパイを使うにあたって、はじめの設定方法はこちら

 

↓コマンド入力

$ sudo pip install nfcpy

 

 

Githubからサンプルコードを取得

nfcpy | Github

 

 

2. NFCリーダのRC-S380をラズパイにUSB接続
→examples/tagtool.pyを実行 (※nfcpyはPython2.xで動作)

 

↓コマンド入力  

$ sudo python2 examples/tagtool.py

 

 

「** waiting for a tag **」が表示される

     ↓

  Suica等のNFCカードをNFCリーダ(RC-S380)にかざす

     ↓

そのタグを読み込んだ結果が表示される

 

(※SuicaだけでなくPasmoやNanacoカードなど様々なNFCカードも使えます)

 

3. IDmを取り出す

 

Suicaがタッチされた時にIDmを取り出すプログラムをコマンドしていく。

 


# -*- coding: utf-8 -*-
import requests
import json
import binascii
import nfc
import time
from threading import Thread, Timer

# login CANDY HOUSE account and get token
url = "https://api.candyhouse.co/v1/accounts/login"
head = {"Content-type": "application/json"}
payload = {
"email":"jerming@candyhouse.co", "password":"stanfordsucks"}
response = requests.post(url, headers=head, data=json.dumps(payload))
token = response.json()[
"authorization"]

# Suica待ち受けの1サイクル秒
TIME_cycle = 1.0
# Suica待ち受けの反応インターバル秒
TIME_interval = 0.2
# タッチされてから次の待ち受けを開始するまで無効化する秒
TIME_wait = 3

# NFC接続リクエストのための準備
# 212F(FeliCa)で設定

target_req_suica = nfc.clf.RemoteTarget("212F")
# 0003(Suica)
target_req_suica.sensf_req = bytearray.fromhex("0000030000")

print 'Waiting for SUICA...'
while True:
    # USBに接続されたNFCリーダに接続してインスタンス化
    clf = nfc.ContactlessFrontend(
'usb')
    # Suica待ち受け開始
    # clf.sense( [リモートターゲット], [検索回数], [検索の間隔] )
    target_res = clf.sense(target_req_suica, iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
    
   
if target_res != None:
        
       
#tag = nfc.tag.tt3.Type3Tag(clf, target_res)
        #なんか仕様変わったっぽい?↓なら動いた

        tag = nfc.tag.activate_tt3(clf, target_res)
        tag.sys = 3
        
       
#IDmを取り出す
        idm = binascii.hexlify(tag.idm)
       
print 'Suica detected. idm = ' + idm
        
       
if (idm == "0139c1234567e6f5") or (idm == "0139e9876547e6f5") or (idm == "01010a1234567100"): #Jerming Watch or Mako iPhone7 or Yui PASMO
            # unlock Sesame with token
            url_control =
"https://api.candyhouse.co/v1/sesames/E746E033D09D/control"
            head_control = {"X-Authorization": token, "Content-type": "application/json"}
            payload_control = {
"type":"unlock"}
            response_control = requests.post(url_control, headers=head_control, data=json.dumps(payload_control))
            
           
print(response_control.text)
        
       
print 'sleep ' + str(TIME_wait) + ' seconds'
        time.sleep(TIME_wait)
    #end if
    
    clf.close()


#end while
 

 

 

※実行するには管理者権限が必要です。

sudo python2 suica.py

 

 

 

SuicaをかざしてIDmが表示されたら成功です!


 

 

管理者権限なしで動かす<sudoなしで実行する>

1.lsusbコマンドを打って接続されているRC-S380のIDを調べる

 

$ lsusb Bus 001 Device 004: ID XXXX:YYYY Sony Corp.

 

2.XXXX、YYYYという部分に表示されるIDを使い下記のコマンドを実行

$ sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"XXXX\", ATTRS{idProduct}==\"YYYY\", GROUP=\"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'

これでsudo無しでRC-S380を使えるようになりました。

 

 

 

 

また上記で不明な点がある場合は、お手数ですが下記メールアドレスまでお問い合わせください。

 

お問い合わせメールsesame@candyhouse.co

 

 

セサミニュース
セサミの耐久性 … セサミは最強?耐久性テストの様子を公開中です!
セサミの深イイ話 … セサミが役に立った思いがけない瞬間とは?
セサミのちょっと変わった使い方 … 使い道は鍵だけ?いいえ、こんな使い方もあるかもしれません!
セサミCMの裏話 … セサミが全米で大ヒットした秘密はこちら!

 

 

 

セサミ・スマートロックの商品ページをチェックする

 

CANDYHOUSE をSNSでチェックする

    

Facebookグループはこちら