Entradas de bloqueio com listras e passes NFC
Enquanto trabalhava remotamente e viajava de um lugar para outro, notei um padrão recorrente. Toda vez que você chega em uma nova cidade, você aluga um Airbnb ou check-in para um hotel. Então você se inscreve para uma academia e um espaço de trabalho. Os pagamentos para esses serviços são todos realizados eletronicamente. Mas quando se trata de acesso, você precisa de um cartão de plástico, um FOB ou uma chave física. Isso cria atrito para todos os envolvidos. Você tem que ir buscá -lo, carregá -lo, espero que não o perca e devolva antes de sair. Do lado dos negócios, eles precisam pagar alguém para trabalhar na recepção para emitir, rastrear e coletar esses dispositivos de acesso. Isso me fez pensar, e se o acesso fosse totalmente digital? Felizmente, a carteira digital passa, há uma maneira melhor que está ganhando popularidade. Em vez de cartões e chaves, podemos emitir passes digitais com o Google Wallet e a Apple Wallet e usar um leitor da NFC para destacar a entrada. Esses passes digitais são como certificados que são digitalizáveis com a NFC. Eles podem ser emitidos e revogados eletronicamente sem intervenção humana (não é necessária recepção). Como todos já têm um telefone inteligente ou assistir com a Apple Wallet e o Google Wallet, não há nada extra para instalar ou transportar. A integração Apple e o Google têm APIs de carteira pública para emitir passes, mas para empresas menores é mais fácil usar um intermediário como a Passninja. A Passninja atua como uma camada de abstração no topo da Apple & Google, então você só precisa integrar uma API. Em seguida, você pode colocar um leitor NFC compatível com Apple/Google perto da porta. Usaremos o Dotorigin VTAP100. Construindo -o como exemplo, criaremos um sistema simples de associação à academia. O membro pode então usar o telefone (ou assistir) para acessar a porta. Haverá duas bases de código: Site: um site público que aceita pagamentos por meio da finalização da faixa e emite os passes digitais. Portão: Um sistema de controle de acesso privado que é executado no Linux perto da entrada. Ele verificará o status da associação entrando em contato com a API de assinatura do Stripe e desbloquear a porta para membros ativos. Hardware de arquitetura Aqui está o que você precisará criar a solução: Computador de requisitos: um Raspberry Pi Zero 2W ou equivalente. Para se comunicar entre o leitor da NFC e a API Stripe sobre Wi -Fi. NFC Reader: VTAP100, um leitor NFC compatível com Apple / Google Wallet. Greve/parafuso eletrônico: para desbloquear e trancar a porta. Relé: um relé de 3,3V ou equivalente. Para controlar o bloqueio e o desbloqueio do ataque da porta do Raspberry Pi. Conta Passninja: Para lidar com a emissão de passes do Google e da Apple Wallet. Diagrama de fiação A fiação será assim: Configuração do Passninja para configurar o Passninja: Crie uma conta. Visit Click “Get Started” Create a pass template Log in to PassNinja: /login Click on “Dashboard” in the upper right corner Click on “New Pass Template” button and create a template for Google & Apple Setup the NFC Reader:Follow these instructions /tutorials/hardware/how-to-configure-a-dot-origin-vtap100-nfc-reader Purchase flow The purchase part is on a public website that handles the checkout and issuing de passes. Teremos um endpoint/assinar para criar a sessão de checkout da faixa e redirecionar o usuário para pagar: // em web/src/index.ts // criar um cliente de listra API const Stripe = new Stripe (”) // Quando o usuário visita/subscrever, uma sessão de verificação de faixa é criada e é redirecionada para pagar. succcess_url = new url (‘/success? session_id = {checkout_session_id}’, ”) .ToString () // Crie uma sessão de checkout` const session = wait stripe.checkout.sessions.create ({mode: ‘subcription’, success_url, line_items: [
{ price: ”, quantity: 1 }
]
}) // redireciona o usuário para pagar o retorno C.Redirect (session.url)}) Digite o modo de saída do modo de tela cheia quando o usuário terminar de pagar, o check -out de faixa será redirecionado para/sucessor, e a passagem digital pode ser emitida: // em Web/src/index.ts // Criar o passe ninja apos Visitas /sucesso (após a concessão do check -out), emita o digital Pass App.get (‘ /Sucesso’, Async (c) => {// Obtenha checkout session_id` const session_id = c.req.Query (‘session_id’) // Obtenha a sessão de Sessption SSUSSCROSSCROSSCROSSCROSSSIFRICS.SESCROSSCROSSCROSSCROSSCROSSCROSSamentos // obtém -se da sessão de Settshption. stripe.subScriptions.retrieve (session.subScription) // Verifique se o status de assinatura está ativo` se (assinatura? .Status! == ‘Active’) lança um novo erro (‘assinatura não foi bem -sucedida’) // confirmamos que é pago, então emitir um novo pass` const Pass = waitninja.pass.create (pasninjA_tty_sinnja_, emitem um novo pass ‘ session.customer_details.name, email: session.customer_details.email, // *importante *: salve a subscrição_id dentro do passe // Este é o valor que o leitor NFC envia durante um Modo de Passo de Passo. Controle de acesso à porta do modo de tela cheia A lógica de acesso à porta pode ser executada em qualquer computador, mas usaremos um Raspberry Pi Zero 2W, que é uma opção barata (~ US $ 15 USD) e tem a capacidade de controlar um relé. A sequência se parece com a seguinte: o leitor da NFC atua como uma porta serial virtual e, cada vez que o telefone ou o relógio de um usuário é colocado perto dela, uma nova linha é enviada pela porta serial. O Linux normalmente mapeia as portas seriais virtuais para /dev /ttyacm0. Para acessá -lo no Node.js, usaremos o pacote NPM Serialport. // in gate/src/index.ts` import { SerialPort } from ‘serialport’` // create a serial port client` const port = new SerialPort({ path: ‘/dev/ttyACM0’, baudRate: 9600 }) // use ReadlineParser, so that we receive a full lines const reader = port.pipe(new ReadlineParser({ delimiter: ‘\r\n’ })) // Uma nova linha é enviada sempre que um passe fica próximo ao NFC Reader Reader.on (‘Data’, Async (Data) => {// Verifique se passa aqui}) Digite o modo de tela cheia de tela cheia do modo de tela completa Os dados enviados vêm do Sub-Message do NFC da passagem, que no nosso caso é o ID da subscrição (com o STRIPE (com o Sub -_). Podemos usar esse ID para verificar se o status da assinatura está ativo: // em gate/src/index.ts reader.on (‘dados’, assínconno (subscrição_id) => {// recuperar o registro de assinatura ‘constinatrifscripts =) screenScription.Subscriptions.retrive (Subscription_Id) // verificação’ ‘) se ativo’ se ativo ‘se screenscritripts). Relé de som e gatilho para desbloquear o sucesso do sucesso da porta (porta) console.log (`acesso permitido. id = $ {subcription_id}`)} else {// flash leds vermelho e reproduzir erros de som (port) console.error (`acesso negado. id = $ {subcription_id}, status {{subcrição? A lógica abrirá o parafuso da porta acionando o relé: // em gate/src/index.ts // configurar uma conexão com o relé no gpio #8 const relay = new gpio (8) // Abra o parafuso da porta para o parafuso de 5 segundos (port) {// girar o relatório para desbloquear o regulamento do regulamento. // Isso faz com que o parafuso da porta trava. setTimeout (() => relay.low (), 5_000)} Digite a conclusão do modo de tela cheia de tela cheia usando passes digitais torna o bloqueio físico muito mais simples. Ele permite que os comerciantes vendam e concedam acesso completamente digitalmente, e os usuários não precisam lidar com a coleta, carregando, substituindo, compartilhando e retornando cartões e chaves. É tão fácil quanto emitir um passe após o pagamento e adicionar um leitor da NFC à entrada para verificar o status do pagamento. Agradecimentos especiais a Bill Scott, da Dotorigin, por compartilhar seu conhecimento sobre esse tópico. Links
Fonte
Publicar comentário