Hackeando um dispositivo IoT: do mundo físico ao front-end

Douglas Goulart
Cobli
Published in
5 min readNov 10, 2021

--

Na Cobli, nós buscamos sempre entregar a melhor experiência para nossos clientes resolverem os seus problemas logísticos — muitas vezes cabeludos. Fazemos isso para que eles possam focar naquilo que mais importa: o sucesso de seu cliente e de sua operação.

Em junho de 2020, decidimos nos dedicar a uma questão já conhecida dos nossos clientes: imagine que você é um gestor de uma frota de manutenção de ar- condicionado. Na sua equipe existem 10 veículos, 15 motoristas e nenhum deles possui um carro fixo. E aí? Como saber qual motorista está em qual veículo?

Vale dizer: a solução para isso não é trivial. Muitas empresas operam de forma dinâmica, sem horário para começar e para acabar, com diferentes pessoas dirigindo o mesmo veículo em momentos distintos, sem muitas restrições e regras de uso da frota.

Historicamente, tentamos resolver esse problema de diversas formas, seja via uma funcionalidade no painel web, seja via um aplicativo móvel, mas o problema de fato não se resolvia.

Neste texto, contamos como foi o processo para finalmente chegarmos à melhor solução para os nossos clientes a partir de um dispositivo de IoT.

“Getting started”

A primeira etapa foi olhar para as soluções presentes no mercado, para aí então buscar o que faria sentido no nosso contexto. Com isso, o próximo passo foi seguir para o desenvolvimento da PoC (Proof of Concept). Ela nos ajuda a responder diversas perguntas com relação a possíveis dificuldades do projeto, focando os esforços nas etapas mais incertas para diminuir possíveis riscos.

Aqui na Cobli, todas essas etapas de desenvolvimento de produto são baseadas em processos colaborativos dentro de times multidisciplinares, com gerente de projeto, designers e devs (front-end/back-end/full-stack).

Desenvolvimento

O hardware

O dispositivo de rastreio com que a Cobli trabalha é fornecido por um parceiro, que, apesar de não disponibilizar o firmware do rastreador, fornece uma série de configurações customizáveis para cada caso de uso. A primeira etapa do desenvolvimento do projeto foi verificar quais tecnologias eram compatíveis com esse hardware. Em nossa busca, encontramos um aparelho que é bem usual na área de telemetria: o famoso iButton.

O iButton nada mais é que um chaveiro com uma memória interna. Ele possui ótima portabilidade: basta o motorista colocar o iButton no seu molho de chaves, assim ele não corre o risco de esquecer o chaveiro e acabar não se identificando ao pegar o carro.

Utilizando o protocolo 1-wire e um leitor de iButton, o dispositivo é capaz de ler as informações contidas na memória interna do chaveiro. Depois que o motorista faz o contato do chaveiro com o leitor instalado no veículo, o dispositivo passa a enviar o código contido no chaveiro em todas as mensagens de localização para o nosso back-end.

Entretanto, após algumas entrevistas com clientes, notamos que uma solução de identificação não faria sentido sem algum tipo de “incentivo”, uma vez que o agente de campo poderia se esquecer de realizar essa etapa. Diante desse questionamento, o time se reuniu para definir como faríamos isso.

Uma prática comum do mercado, em soluções de identificação, é a instalação de um relé que bloqueie a partida ou funcionamento do veículo. No entanto, essa não era uma solução viável para a primeira versão do produto, uma vez que aumentaria muito a complexidade de instalação e operação.

Então, por que não um simples alarme? Um alerta sonoro que lembre o agente de campo da necessidade de realizar a identificação. Para isso, foi utilizado um buzzer acoplado ao dispositivo que apitaria intermitentemente até que o agente de campo se identificasse.

Mas como fazer toda essa configuração em um dispositivo em que não se controla o nível mais baixo do firmware?

O hardware com o qual trabalhamos nos disponibiliza uma espécie de script linear capaz de interagir e alterar estados internos do dispositivo. Por meio desse script, “hackeamos” o dispositivo, criando uma máquina de estados embarcada. O controle dessa máquina de estados foi realizada por uma tabela verdade incluindo como variáveis: estado de ignição, estado de identificação e estado do buzzer. Tudo isso para garantir que a identificação ocorresse o mais rápido possível no back-end da Cobli.

O software

Definidas as especificações dos periféricos a serem utilizados no rastreador, partimos para a implementação do software responsável por realizar a identificação dentro da plataforma da Cobli.

A arquitetura atual da Cobli se utiliza das mensagens UDP enviadas pelos dispositivos para serem introduzidas no nosso sistema. A primeira etapa do projeto de software envolve alterações nesse sistema inicial a fim de incorporar a nova informação do iButton no corpo das mensagens.

As mensagens com a informação do chaveiro são injetadas no sistema por meio de um serviço de mensageria distribuído. Cada uma das mensagens é processada em uma máquina de estados que determina se o dispositivo está associado a um chaveiro e se esse chaveiro possui um agente de campo da frota associado.

.A saída dessa máquina de estados gera uma associação entre motorista e veículo, tornando possível para o gestor da frota visualizar em seu painel o histórico dos motoristas que conduziram determinado veículo e qual motorista está com aquele veículo em tempo real.

O sistema de processamento distribuído foi desenvolvido utilizando do framework Apache Flink em Scala.

Da Matrix para Zion

Constantemente, buscamos as tecnologias mais adequadas para cada tipo de problema. Nesse caso específico, no qual tínhamos um elevado número de mensagens a serem processadas em um espaço de tempo muito curto, optamos por usar o Apache Flink e um “hack” na configuração do dispositivo.

O mais empolgante disso tudo é ter o desafio de traduzir algo físico (o motorista encostando um chaveiro em um leitor) em uma identificação real no painel da Cobli.

Estamos em uma toada de desenvolvimento. A Cobli cresceu mais de duas vezes em um período tão esquisito como foi 2020–2021. Mesmo com tudo acontecendo, tivemos o privilégio de conhecer novas pessoas, empresas e operações, e o mais importante: novas dores e problemas a serem resolvidos.

Aprendemos muito e seguimos executando nossa missão de levar soluções e tecnologia para a logística por aí afora.

Gostou da gente e está procurando uma oportunidade de emprego em tecnologia? Confira nossa página de carreiras e inscreva-se nas nossas vagas!

--

--