Nos últimos meses, tenho brincado com a nova API Web Bluetooth , que está prestes a ser lançada no Chrome 56 em fevereiro de 2017. E deixe-me dizer, esse novo recurso acaba de desbloquear muitas novas possibilidades para a Web.
Como Web Advocate, fiquei muito animado e mal podia esperar para construir um aplicativo mostrando como é fácil combinar Angular e a API Web Bluetooth (ainda mais, com qualquer uma das próximas APIs Web, mais sobre isso em breve, fique ligado ).
Vamos conhecer o módulo Bluetooth Web ausente para aplicação angular
Comecei então a trabalhar com meu amigo François Beaufort (parabéns a ele!) para construir um aplicativo demo , uma espécie de prova de conceito que ilustra como integrar Web Bluetooth com Angular.
Depois de implementar alguns casos de uso, criei um módulo Angular que abstrai todo o padrão necessário para configurar a API Web Bluetooth.
Presumo que você já esteja familiarizado com as APIs Web Bluetooth: servidor GATT, serviços, características… etc. Por favor, sinta-se confortável com este tópico antes de ler as próximas seções. Aqui estão alguns recursos:
Também presumo que você tenha algum conhecimento básico sobre Observáveis , Observadores e Assuntos .
Você notará que alguns métodos terminam com um símbolo $. Este é algum tipo de convenção no mundo dos Observáveis que já usamos há algum tempo. Podemos abandonar este símbolo $ no futuro por causa desta postagem no blog.
Você pode obter este módulo usando Yarn ou NPM :
$ yarn add @manekinekko/angular-web-bluetooth
$ npm i -S @manekinekko/angular-web-bluetooth
O módulo é simples de usar. Primeiro, importe o formulário do módulo WebBluetoothModule @manekinekko/angular-web-bluetooth :
Chamar o método WebBluetoothModule.forRoot() fornecerá o serviço BluetoothCore que você precisará usar dentro de seus próprios serviços/componentes, como em battery-level.component.ts :
O WebBluetoothModule.forRoot() também fornece uma implementação BrowserWebBluetooth que usa navigator.bluetooth nos bastidores. Uma implementação ServerWebBluetooth para Angular Universal virá mais tarde. É claro que, usando o DI do Angular, você pode fornecer sua implementação personalizada, se desejar.
O serviço BatteryLevelService ( battery-level.service.ts ) é onde você irá (deverá) implementar a lógica do seu dispositivo/sensor. No exemplo a seguir, estamos implementando um serviço de nível de bateria que lê o nível da bateria do dispositivo conectado:
OK! Vamos explicar o que está acontecendo dentro do método getBatteryLevel() …
Basicamente, para ler um valor de um dispositivo, você precisa passar pelo mesmo fluxo de trabalho (para casos de uso comuns):
3. Então, você obterá o serviço primário desse servidor GATT
4. Em seguida, obtenha uma característica específica
5. Leia pela última vez o valor extraído dessa característica (como DataView)
6. A última etapa fornecerá os valores como tipos de DataView. Você terá que ler os valores corretos específicos do seu dispositivo/sensor. Por exemplo, para valores simples como battery level , chamar value.getUint8(0) é suficiente:
.map( (value: DataView) => value.getUint8(0) );
.map( (data: DataView) => {
let value = data.getUint16(0, true /* little endian */);
let mantissa = value & 0x0FFF;
let exponent = value >> 12;
let magnitude = Math.pow(2, exponent);
let output = (mantissa * magnitude);
let lux = output / 100.0;
return +lux.toFixed(2);
});
Aqui está um repositório básico que o ajudará a começar…
Todas as contribuições são bem-vindas. Abra um problema no github e dê-nos seus comentários…
Se você precisar ir ainda mais longe e implementar aplicativos ainda mais interessantes usando mais dispositivos e sensores, você pode dar uma olhada na API Web Bluetooth .
Siga-me no Twitter @manekinekko para saber mais sobre a plataforma web.
Embarque em uma emocionante jornada de inovação e sucesso enquanto explora o potencial inexplorado dessas surpreendentes plataformas sem código. Deixe-me compartilhar uma história com você sobre Sapna, uma notável empresária.
Esta semana, recebi um e-mail de um membro da lista de e-mails diários. Eles queriam saber: quais recursos você visita diariamente, semanalmente e mensalmente? Ótima pergunta! Fico feliz em tentar compartilhar algumas ideias sobre meu fluxo de trabalho e os principais recursos que uso.
No mundo interconectado de hoje, a ameaça de ataques cibernéticos é mais prevalente do que nunca. Criminosos cibernéticos e agentes de estado-nação estão constantemente buscando explorar vulnerabilidades e roubar dados valiosos, representando um risco significativo para organizações de todos os tamanhos.
“Ele vai me proteger quando eu estiver em perigo. Ele me esconderá em sua tenda.
Qualquer mente racional sabe que os círculos políticos e midiáticos são dominados pela esquerda, até mesmo pela extrema esquerda, um estado de coisas que cria um desequilíbrio no discurso político. No campo da religião, esse desequilíbrio é bem visível: jornais e redes de esquerda não se apressam em defender a fé cristã.
Mudar para uma nova carreira pode ser extremamente desafiador se você tentar fazer isso sozinho. É importante encontrar parceiros de responsabilidade que estejam no mesmo nível de aprendizado que você, que compartilhem objetivos, tenacidade e motivação semelhantes.