Wir befinden uns in einem privaten Büro bei WeWork. Gemeinschaftsräume wie der Loungebereich im Gebäude können mit einer IC-Karte für WeWork-Mitglieder freigeschaltet werden, aber ich war ein wenig unzufrieden mit der Tatsache, dass der Schlüssel zum Büroraum ein physischer Schlüssel war. Es wäre praktisch, wenn der Raum mit einer IC-Karte geöffnet werden könnte.
Als ich mich an den WeWork-Support wandte, um dies zu tun, hörte ich, dass es Unternehmen gibt, die handelsübliche Smart Locks verwenden. Deshalb haben wir uns entschlossen, diesem Beispiel zu folgen.
Von verschiedenen Herstellern sind sogenannte Smart Locks erhältlich, die ohne Bauarbeiten an der Tür befestigt und mit einer Smartphone-App entriegelt werden können.
Die privaten Büroschlüssel von WeWork haben jedoch eine etwas spezielle Form (die Breite des Montagebereichs ist schmal, der Daumendrehknopf ist dünn), sodass nicht alle intelligenten Schlösser montiert werden können. Nach vielen Recherchen entschied ich, dass Sesame mini in Ordnung ist, also kaufte ich es im Online-Shop.
Die entschiedenen Punkte sind wie folgt.
Insbesondere der zweite Punkt war ein entscheidender Faktor, der sich von den anderen unterschied. Als ich das Foto des Schlüssels per E-Mail verschickte, gab es sofort eine Antwort und es war Gottes Antwort, dass er mir einen Adapter schicken würde.
Dank dessen konnte ich mit der Smartphone-App sicher entsperren / sperren.
Es war gut, dass die Farbvariation mattschwarz war. Es fühlt sich gut an, die Farbe der Tür anzupassen.
Sesam allein kann nur über Bluetooth eine Verbindung zu einer Smartphone-App herstellen, jedoch über einen dedizierten [WiFi-Zugangspunkt](https://jp.candyhouse.co/blogs/how-to/wifi%E3%82%A2%E3%82%AF%]. E3% 82% BB% E3% 82% B9% E3% 83% 9D% E3% 82% A4% E3% 83% B3% E3% 83% 88% E3% 81% A7% E9% 81% A0% E9% 9A% 94% E6% 93% 8D% E4% BD% 9C% E3% 82% 92% E5% 8F% AF% E8% 83% BD% E3% 81% AB% E3% 81% 99% E3% 82% Mit 8B) können Sie von überall auf der Welt über eine Internetverbindung auf den in Ihrem Büro installierten Sesam zugreifen.
Darüber hinaus lautet Sesam API ist geöffnet, sodass Sie es selbst anpassen können.
Es ist viel bequemer als zuvor, nur mit einer Smartphone-App anstelle eines physischen Schlüssels arbeiten zu können, aber das Ideal ist, mit der Berührung einer IC-Karte öffnen und schließen zu können. Ein WiFi-Zugangspunkt ist dafür unverzichtbar, deshalb habe ich ihn zusätzlich gekauft.
Raspberry Pi wird verwendet, um die IC-Karte zu lesen und die API zu bedienen. Es gab bereits einen hilfreichen Artikel, daher habe ich dieses Verfahren im Allgemeinen befolgt.
Bereiten Sie zunächst die erforderliche Ausrüstung vor. Ich habe sie alle bei Amazon gekauft.
Dann fuhr ich mit dem Setup gemäß dem Inhalt des obigen Artikels fort, aber da ich keinen USB-Hub, keine Maus und keine Tastatur hatte, entschied ich mich, es über WLAN zu betreiben, indem ich mich auf den folgenden Artikel bezog.
Bei den oben genannten Schritten wird die Sicherheit nicht besonders berücksichtigt. Machen wir es also richtig. Es ist ein gemeinsames Büro, in dem verschiedene Personen gemischt sind.
Wenn Sie dem Artikel über die Manipulation von Sesam mit dem vorherigen Raspeltorte folgen, ist dies im Allgemeinen in Ordnung, aber es gibt einige Teile, die nicht so gut funktionieren, wie sie sind. ** WeWorks Karte ist nicht Suica ** und ** die im Artikel verwendete API-Version ist alt **.
Also habe ich das Teil repariert, das nicht funktioniert hat, und den folgenden Code vervollständigt. Die aktuelle Version der API erfordert einen API-Schlüssel. Wie Sie den API-Schlüssel erhalten, finden Sie unter hier.
SesameNFC.py
# -*- coding: utf-8 -*-
import requests
import json
import binascii
import nfc
import time
import traceback
from threading import Thread, Timer
#1 Zyklussekunde IC-Karten-Standby
TIME_cycle = 1.0
#Reaktionsintervall der IC-Karte im Sekundenintervall
TIME_interval = 0.2
#Deaktivieren Sie Sekunden von Berührung, um als nächstes zu beginnen
TIME_wait = 3
#SESAME API KEY
API_key = "Sesam-API-Schlüssel"
#Vorbereiten der NFC-Verbindungsanforderung
# 106A(NFC type A)Set mit
target_req_nfc = nfc.clf.RemoteTarget("106A")
print 'Bitte berühren Sie die IC-Karte...'
while True:
try:
#Instanziieren Sie einen über USB angeschlossenen Kartenleser
clf = nfc.ContactlessFrontend('usb')
#IC-Karten-Standby-Start
# clf.sense( [Remote-Ziel], [Anzahl der Suchvorgänge], [Suchintervall] )
target_res = clf.sense(target_req_nfc, iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
if target_res != None:
tag = nfc.tag.activate(clf, target_res)
#ID extrahieren
idm = binascii.hexlify(tag.identifier).upper()
print 'NFC detected. ID = ' + idm
#IC-Kartenprüfung
if (idm == "tagtool.ID von py abgerufen"):
url_control = "https://api.candyhouse.co/public/sesame/Sesam-Terminal-ID"
head_control = {"Authorization": API_key, "Content-type": "application/json"}
# get status
response_control = requests.get(url_control, headers=head_control)
#Tritt ein Fehler auf, wenn das Intervall bis zur nächsten Anforderung kurz ist? Warten Sie also ein paar Sekunden
time.sleep(1)
res = json.loads(response_control.text)
stats = res["locked"]
if (stats == True):
# unlock
payload_control = {"command":"unlock"}
response_control = requests.post(url_control, headers=head_control, data=json.dumps(payload_control))
else:
# lock
payload_control = {"command":"lock"}
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
#end if
clf.close()
#end try
except KeyboardInterrupt:
print("Ctrl+Bei C angehalten")
clf.close()
break
except:
clf.close()
traceback.print_exc()
pass
#end while
Sie können den Sesam jetzt mit der WeWork IC-Karte entsperren / sperren!
Die Markierung des IC-Kartenlesers wurde aufgrund des Kabeleinführungsschlitzes auf den Kopf gestellt, daher habe ich einen WeWork-Aufkleber darauf angebracht, um zu betrügen. Infolgedessen sieht es aus wie ein offizieller Gegenstand und ist es nicht schön?
Es funktioniert vorerst, aber tatsächlich kann dieser Code häufig nicht mit einem Fehler entsperrt / gesperrt werden. Anscheinend kann sich die Antwort der API oder des WiFi-Zugangspunkts verzögern. Wenn Sie dies also ernsthaft tun, sollten Sie die Wiederholungsverarbeitung einbeziehen. Wenn Sie sie jedoch erneut berühren, funktioniert sie normalerweise, sodass sie in Ordnung ist. Ich bin.
Stattdessen blinkt die LED bei jedem Ereignis. Sie können anhand des blinkenden Musters erkennen, welcher Prozess ausgeführt wurde, und vor allem ist L Chika die königliche Straße, wenn Sie Razz Pie machen!
Ich habe im folgenden Artikel beschrieben, wie die LED blinkt. Wie man Python3 L Chika (LED blinkt) mit Raspberry Pi Zero WH macht
Und der Code, der L Chika enthält, lautet wie folgt.
SesameNFC_LED.py
# -*- coding: utf-8 -*-
import requests
import json
import binascii
import nfc
import time
import traceback
import RPi.GPIO as GPIO
from threading import Thread, Timer
#1 Zyklussekunde IC-Karten-Standby
TIME_cycle = 1.0
#Reaktionsintervall der IC-Karte im Sekundenintervall
TIME_interval = 0.2
#Deaktivieren Sie Sekunden von Berührung, um als nächstes zu beginnen
TIME_wait = 3
#SESAME API KEY
API_key = "Sesam-API-Schlüssel"
#Vorbereiten der NFC-Verbindungsanforderung
# 106A(NFC type A)Set mit
target_req_nfc = nfc.clf.RemoteTarget("106A")
print 'Bitte berühren Sie die IC-Karte...'
while True:
try:
#Instanziieren Sie einen über USB angeschlossenen Kartenleser
clf = nfc.ContactlessFrontend('usb')
#IC-Karten-Standby-Start
# clf.sense( [Remote-Ziel], [Anzahl der Suchvorgänge], [Suchintervall] )
target_res = clf.sense(target_req_nfc, iterations=int(TIME_cycle//TIME_interval)+1 , interval=TIME_interval)
if target_res != None:
tag = nfc.tag.activate(clf, target_res)
#ID extrahieren
idm = binascii.hexlify(tag.identifier).upper()
print 'NFC detected. ID = ' + idm
#IC-Kartenprüfung
if (idm == "tagtool.ID von py gelesen"):
#Stellen Sie den GPIO-Nummernspezifikationsmodus ein(BCM:Rollen-Pin-Nummer, BOARD:PIN Nummer)
GPIO.setmode(GPIO.BCM)
#Stellen Sie Pin 23 (grüne LED) als Ausgang ein
GPIO.setup(23, GPIO.OUT)
#Blinkt
for i in range(3):
GPIO.output(23, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(23, GPIO.LOW)
time.sleep(0.5)
#GPIO-Einstellungen zurücksetzen
GPIO.cleanup()
url_control = "https://api.candyhouse.co/public/sesame/Sesam-Terminal-ID"
head_control = {"Authorization": API_key, "Content-type": "application/json"}
# get status
response_control = requests.get(url_control, headers=head_control)
#Tritt ein Fehler auf, wenn das Intervall bis zur nächsten Anforderung kurz ist? Warten Sie also ein paar Sekunden
time.sleep(1)
res = json.loads(response_control.text)
stats = res["locked"]
if (stats == True):
# unlock
payload_control = {"command":"unlock"}
response_control = requests.post(url_control, headers=head_control, data=json.dumps(payload_control))
#Grüne LED leuchtet, wenn sie entsperrt ist
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.HIGH)
time.sleep(3)
GPIO.output(23, GPIO.LOW)
GPIO.cleanup()
else:
# lock
payload_control = {"command":"lock"}
response_control = requests.post(url_control, headers=head_control, data=json.dumps(payload_control))
#Die grüne LED blinkt schnell, wenn sie gesperrt ist
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
for i in range(6):
GPIO.output(23, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(23, GPIO.LOW)
time.sleep(0.25)
GPIO.cleanup()
print(response_control.text)
print 'sleep ' + str(TIME_wait) + ' seconds'
time.sleep(TIME_wait)
#end if
#end if
clf.close()
#end try
except KeyboardInterrupt:
print("Ctrl+Bei C angehalten")
clf.close()
#Blinkt die rote LED (Pin 22) heftig, wenn ein Fehler auftritt
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
for i in range(10):
GPIO.output(22, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(22, GPIO.LOW)
time.sleep(0.1)
GPIO.cleanup()
break
except:
clf.close()
GPIO.cleanup()
traceback.print_exc()
#Blinkt die rote LED bei einem Fehler heftig
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
for i in range(20):
GPIO.output(22, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(22, GPIO.LOW)
time.sleep(0.1)
GPIO.cleanup()
pass
#end while
…… Es ist ein ungeschickter Code, den ich vorerst zum Laufen gebracht habe, aber er behindert meine Arbeit nicht, also lasse ich ihn unberührt.
Kannst du die LED auf dem Schreibtisch blinken sehen? Nur zu diesem Zeitpunkt war ich dankbar für die Glaswand von WeWork. Es wäre schwieriger gewesen, einen IC-Kartenleser und eine LED an einer normalen Wand zu installieren.
Auf diese Weise konnten wir den Wunsch erfüllen, den Raum mit der IC-Karte von WeWork zu entsperren und zu verschließen.
Aufgrund des schlechten Codes und der langsamen Reaktion der API und des WiFi-Zugangspunkts schlägt das Entsperren / Sperren häufig fehl ** oder ** es dauert einige Sekunden von der Berührung bis zum Entsperren / Sperren **. Obwohl dies der Fall ist, ist dies in Ordnung, da die Anzahl der Personen und die Häufigkeit der Nutzung nicht so hoch sind. Holprig, das ist in Ordnung, wenn ich mich wohl fühle.
Daher freue ich mich sehr, dass ich von physischen Schlüsseln und Smartphone-Funktionen befreit bin und mich mit einer IC-Karte frei vom Gemeinschaftsbereich zum privaten Büro bewegen kann. Ich bin glücklich.