Der Tag des 2. "Lass uns mit jeder Person im Labor einen Tag lang etwas machen!" Artikel anderer Mitglieder sind hier. Der erste Artikel von mir ist hier.
Sesam ist an den Schlüssel des Labors angehängt, aber es ist sehr mühsam, die Anwendung bei jedem Öffnen und Schließen auf dem Mobiltelefon zu öffnen und zu bedienen. Ich wünschte, ich könnte es mit Suica oder Felica von Apple Pay öffnen.
Das Bild ist so.
Das Bild stammt aus dem Artikel hier. Vielen Dank.
https://www.otwo.jp/blog/raspi_sesame_1/ http://www.otwo.jp/blog/raspi_sesame_2/ Siehe diesen Bereich.
nfcpy: 1.0.3 python2: 2.7.16 python3: 3.7.3
Installieren Sie nfcpy mit pip. Es wurde gesagt, dass es auch Python3 unterstützt, daher ist die Richtlinie, Python3 zu verwenden.
$ pip3 install nfcpy
Klonen Sie gleichzeitig die Quelle von Github. Versuchen Sie, examples / tagtool.py
auszuführen.
$ python3 tagtool.py
[nfc.clf] searching for reader on path usb
[nfc.clf] no reader available on path usb
[main] no contactless reader found on usb
[main] no contactless reader available
Ich bekomme eine Fehlermeldung.
Überprüfen Sie Offizielle Dokumente und Qiita-Artikel. Es scheint, dass Sie den USB-Pfad mithilfe der Geräte-ID angeben müssen.
Wenn Sie es mit lsusb
nachschlagen,
$ lsusb
(Kürzung)
Bus 001 Device 025: ID 054c:02e1 Sony Corp. FeliCa S330 [PaSoRi]
(Kürzung)
Die Geräte-ID wird angezeigt. Ich mache mir Sorgen, dass es 330 statt 370 ist, aber es scheint, dass der verwendete Treiber der gleiche ist, also ist es okay.
Geben Sie den USB-Pfad an und versuchen Sie es auszuführen.
$ python3 tagtool.py
[nfc.clf] searching for reader on path usb:054c:02e1
[nfc.clf.rcs956] input/output error while waiting for ack
[main] no contactless reader available
Das? Nach vielen Recherchen scheint es mir nicht möglich gewesen zu sein, mit dem angegebenen Pfad mit dem Gerät gut zu kommunizieren ...
Nach einer Pizzapause wurde die Arbeit wieder aufgenommen. Erstens gibt es kein Beispiel für Erfolg mit RCS370 & Raspberry Pi & nfcpy. Beginnend mit diesem Artikel habe ich 370 in 380 geändert und es hat funktioniert! Das System ist hier und da ...
Obwohl die Spannung nachließ, wollte ich noch nicht aufgeben, also trank ich Monster und setzte die Untersuchung fort.
Dieser Artikel verwendet Debian und RCS370. Mit python -m nfc
können Sie überprüfen, ob nfcpy ordnungsgemäß installiert ist. Ich werde es vorerst versuchen.
This is the 1.0.3 version of nfcpy run in Python 3.7.3
on Linux-4.19.57-v7+-armv7l-with-debian-10.0
I'm now searching your system for contactless devices
ERROR:nfc.clf.rcs956:input/output error while waiting for ack
I'm not trying serial devices because you haven't told me
-- add the option '--search-tty' to have me looking
-- but beware that this may break other serial devs
Sorry, but I couldn't find any contactless device
Ich erhalte einen Eingabe- / Ausgabefehler. Auch wenn die Versionen von Python und nfcpy mit dem Referenzartikel kombiniert wurden, gab es keine Änderung.
Der Inhalt des Fehlers ist der gleiche wie dieser Artikel. Hmm ...
Ich habe verschiedene Versionen von nfcpy und python ausprobiert, kann aber immer noch nicht ... Das ist ein Chaos ...
RCS370 & Raspberry Pi & nfcpy funktioniert nicht!
Razpai erkennt, dass der RCS370 an den USB-Anschluss angeschlossen ist ... Kann ich RCS380 verwenden?
nfcpy: 1.0.3 python3: 3.6.5
Trotzdem wollte ich nicht aufgeben und beschloss, es auf meinem eigenen Computer (MacBook Air) zu versuchen.
Klonen Sie in ähnlicher Weise nfcpy und führen Sie "examples / tagtool.py" aus.
[nfc.clf] searching for reader on path usb
[nfc.clf] using Sony RC-S370/P RCS956v1.30 at usb:020:018
** waiting for a tag **
Type3Tag 'FeliCa Standard (RC-S???)' ID=Ausweiskarte(Kürzung)
Ich konnte gehen.
[Offizieller Artikel](https://jp.candyhouse.co/blogs/how-to/suica%E3%81%A7%E3%82%BB%E3%82%B5%E3%83%9F%E3% 82% 92% E8% A7% A3% E9% 8C% A0-mit-% E3% 83% A9% E3% 82% BA% E3% 83% 91% E3% 82% A4). Ich wollte Python3 verwenden, also spiele ich damit herum.
nfc_card.py
# -*- 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":"Konto E-Mail-Adresse", "password":"Konto Passwort"}
response = requests.post(url, headers=head, data=json.dumps(payload))
token = response.json()["authorization"]
#Suica Standby 1 Zyklussekunde
TIME_cycle = 1.0
#Suica Standby-Reaktionsintervall Sekunden
TIME_interval = 0.2
#Sekunden zum Deaktivieren, bis der nächste Standby-Modus startet
TIME_wait = 3
#Vorbereiten der NFC-Verbindungsanforderung
# 212F(FeliCa)Set mit
target_req_suica = nfc.clf.RemoteTarget("212F")
# 0003(Suica)
target_req_suica.sensf_req = bytearray.fromhex("0000030000")
print('Waiting for SUICA...')
while True:
#Instanziieren Sie durch Anschließen an einen an USB angeschlossenen NFC-Leser
clf = nfc.ContactlessFrontend('usb')
#Suica Standby-Start
# clf.sense( [Remote-Ziel], [Anzahl der Suchvorgänge], [Suchintervall] )
target_res = clf.sense(target_req_suica, iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
if target_res is not None: # != ->Wechsel zu ist nicht
#tag = nfc.tag.tt3.Type3Tag(clf, target_res)
#Es scheint, dass sich die Spezifikationen geändert haben. ↓ dann hat es geklappt
tag = nfc.tag.activate_tt3(clf, target_res)
tag.sys = 3
#IDm herausnehmen
idm = binascii.hexlify(tag.idm)
print('Suica detected. idm = ' + str(idm))
if (idm == b'IC ID'):
headers = {'X-Authorization':token,}
response = requests.get('https://api.candyhouse.co/v1/sesames/Sesam-Seriennummer', headers=headers)
status = response.json()["is_unlocked"]
url_control = "https://api.candyhouse.co/v1/sesames/Sesam-Seriennummer/control"
head_control = {"X-Authorization": token, "Content-type": "application/json"}
#Schließen, wenn geöffnet, öffnen, wenn geschlossen
if status:
payload_control = {"type":"lock"}
else:
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
Mit Seriennummer, SESAME ID (this % 97% E6% 96% B9% E6% B3% 95% E3% 81% A8% E3% 82% BB% E3% 82% B5% E3% 83% 9Fid% E3% 81% AE% E7% A2% BA Beachten Sie, dass es sich nicht um% E8% AA% 8D% E6% 96% B9% E6% B3% 95)) handelt. Ich konnte die API nicht aufrufen, weil ich diese als SESAME-ID verwendet habe, also habe ich ungefähr 30 Minuten damit verbracht, Zeit zu verschwenden ...
Lol Nun, diesmal kann nicht geholfen werden.
--Draussen vor der Tür
Befestigen Sie den NFC-Leser von innen mit Zellophanband (Entschuldigung für den Lehrer) und prüfen Sie, ob er mit einer IC-Karte von außen geöffnet werden kann.
…öffnen! Nach dem Berühren dauert es jedoch etwa 3 bis 5 Sekunden. Immer noch "Handy entfernen-> entsperren-> Sesam-App öffnen-> auf Verbindung warten-> tippen" Schneller und einfacher! Güte.
Mobile Suica im iPhone X reagiert ebenfalls ordnungsgemäß. Aber reagiert es etwas weniger als die IC-Karte?
Ich dachte, es wäre glatt, aber es war doch nicht so. Wenn es um Kommunikation und Hardware geht, steigt der Schwierigkeitsgrad etwas an. Ich bin jedoch zufrieden, dass das Labor bequemer sein wird.
Und ich habe RCS380 bestellt. Lol Es scheint, dass es bald ankommen wird, also werde ich es montieren und an der Tür befestigen. Wenn es mit 380 funktioniert, werde ich es erneut schreiben.
Ich möchte dieses Treffen ungefähr einmal im Monat treffen. Was machen wir als nächstes?
Recommended Posts