Desenvolvimento

12 jan, 2018

Conheça o Mongoose OS

Publicidade

O Sistema Operacional open source, Mongoose OS é voltado para sistemas embarcados, suportando as arquiteturas ESP32, ESP8266, CC3220, CC3200, entre outras. Com a promessa de um desenvolvimento IoT (Internet das coisas) facilitado, ele nos permite programar tanto em JavaScript quanto em C.

O bacana é que com ele não precisamos perder tempo implementando protocolos, como: MQTT, HTTP, WebSocket, SNTP, entre outros. Já está tudo pronto. Além da atualização Over-The-Air (OTA) da biblioteca ARM mbedTLS e do microChip (ATECC508A).

O sistema também traz uma integração com a AWS IoT, Google IoT Core, Microsoft Azure, Samsung Artik, Adafruit IO, além do próprio dashboard, onde podemos registrar dois dispositivos na versão gratuita.

Primeiros passos

Download

Para começar, faça o download e instalação do mos tool.

Ambientes

O Mongoose OS permite desenvolver em vários ambientes, inclusive em seu próprio ambiente web. Caso não queria usar o Web UI fornecido é possível criar uma pasta com os arquivos necessários para a criação de seu firmware.

Estrutura

Para a criação do projeto, você pode seguir alguns apps de exemplos já fornecidos. Em um projeto simples só será necessário a criação de dois arquivos, o arquivo contendo a lógica de seu firmware e o arquivo com as configurações de build (mos.yml).

Uma recomendação dos desenvolvedores é de nunca colocar o arquivo de configuração final em seu firmware, caso deseje utilizar a atualização OTA.

Build

Existem duas maneiras de realizar o build. Na forma remota, é feito o upload de seu código para a build machine do Mongoose OS ou caso o Docker esteja instalado em sua máquina, é possível realizar o build local passando a flag –local.

Flash

Para realizar o flash de seu firmware, basta ter realizado o build ou direcionar o flash para o zip de seu firmware, passando a arquitetura usada.

Debug

Para as informações de log no Mongoose OS basta habilitar o debug.level no seu arquivo de configuração com as informações que melhor se encaixam em seu ambiente. Por padrão, o debug.level vem com o nível 2, exibindo informações de erros, avisos e informações. É possível enviar estas informações de debug em um tópico MQTT caso este esteja configurado.

Configuração

O Mongoose OS usa o sistema de configuração multicamada, havendo duas partes, o tempo de compilação que define as configurações e o tempo de execução que faz uso das configurações definidas. Os arquivos de configurações são usados para executar a lógica interna do próprio Mongoose OS, estando entre elas: configuração de rede, dos protocolos, entre outras.

As camadas de configuração são: conf0.json configurações padrão do sistema, conf1.json ao conf8.json camadas seguidas executando as configurações setadas, e por último o conf9.json contendo as configurações de execução do firmware. Se você precisa definir seus próprios parâmetros de configuração, adicione uma seção chamada config_schema no arquivo mos.yml. Para mais informações sobre configurações, acesse o link.

Vantagens

  • Código já implementado: Existe muita coisa já pronta, é bem provável que não haja necessidade de codificação.
  • Ajuda da comunidade: A comunidade é extremamente ativa, podendo tirar dúvidas pelo chat, pelo fórum ou abrindo issues no Github.
  • JavaScript: Para você que está acostumado com JavaScript, não terá uma curva de aprendizagem muito grande.
  • Chamada de métodos remotamente: É possível fazer uso da biblioteca RPC Remote Procedure Calls, com chamadas remotas de métodos em seu firmware.

Desvantagens

  • Documentação em Inglês: Caso tenha problemas com documentação em inglês, já vai se acostumando.
  • Algumas Limitações: Apesar de ser nomeado como um sistema operacional, vá com calma, pois não tem a mesma liberdade que um SO normal teria, lembrando que é um sistema para microcontroladores.

Observações

  • JavaScript: Para você que está acostumado a programar em nodejs, talvez sinta uma diferença programando em JS no Mongoose, por isso dê uma olhada na documentação do mjs.
  • Encriptação do flash: Tome cuidado ao realizar esta encriptação. Você corre o risco de não conseguir mais flashar em seu dispositivo, por isso, esteja atento às especificações dessa funcionalidade.

Conclusão

É um sistema bem construído, possui ótimas integrações e uma implementação facilitada. Em minha experiência com o Mongoose OS pude perceber que ele realmente faz o que promete, facilita o desenvolvimento.

Referências